Получить все строки из таблицы, которые имеют обе переменные в одном столбце

Мне нужно получить все идентификаторы компаний из таблицы, в которой есть как идентификаторы города (скажем, 7333 и 10906), но id не работает так, как я это делаю.

Это моя таблица:

и это мой код

SELECT 'company_id' as id FROM 'logistics_companies_destinations' WHERE 'city_id'= 7333 and 'city_id' = 10906
3 ответа

Вы также можете решить это, используя INNER JOIN для самой таблицы, присоединившись к той же company_id и требуя присутствия как city_ids:

SELECT 'lcd1'.'company_id' AS id FROM 'logistics_companies_destinations' AS lcd1 INNER JOIN 'logistics_companies_destinations' AS lcd2 WHERE 'lcd1'.'city_id'= 7333 AND 'lcd2'.'city_id' = 10906

Извините, я обычно также нахмурился на тупо сокращенные имена таблиц, как это, но не придумал лучшие псевдонимы;)


MySQL не имеет INTERSECT слова INTERSECT, но один из способов его реализации:

SELECT 'company_id' as id FROM 'logistics_companies_destinations' WHERE 'city_id' = 10906 and 'company_id' IN (SELECT 'company_id' as id FROM 'logistics_companies_destinations' WHERE 'city_id'= 7333)

[Другой способ (как примечание другого плаката) состоит в том, чтобы дважды присоединиться к таблице и применить условия фильтра по одному к каждому соединению].


Я считаю, что ваша проблема - это "и". Вы ищете company_id, если city_id равно "7333" и "10906". Используйте или, и он должен работать.

licensed under cc by-sa 3.0 with attribution.