@bromba6666

Как написать SQL запрос?

Есть таблица city в ней есть столбец name (Список городов)
Есть таблица ad_cars в ней есть столбец city (Список городов из добавленных обьявлений)

Сейчас выдается список просто всех городов из таблицы city:
SELECT * FROM city ORDER BY name

А нужно чтобы выдавался список только тех городов из таблицы city которые добавлены во вторую таблицу ad_cars без повторений.

Как написать запрос, чтобы предлагался список только тех городов name из таблицы city
которые добавлены в таблицу ad_cars в которой столбец city и они пересекаются?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
black1277
@black1277
Вольный стрелок
SELECT DISTINCT city.name
FROM city
INNER JOIN ad_cars ON city.name = ad_cars.city
ORDER BY city.name;

INNER JOIN соединяет две таблицы на основании совпадения значений в столбцах city.name и ad_cars.city.
DISTINCT удаляет дублирующиеся записи.
ORDER BY city.name сортирует результаты по названию города.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Более быстрый вариант
SELECT city.name
FROM city 
WHERE city.name 
       IN (SELECT ad_cars.city FROM ad_cars)
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
SELECT city.name
FROM city 
WHERE EXISTS (
    SELECT city FROM ad_cars WHERE ad_cars.city = city.name
);

Test this code SQL here
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы