我有一个包含company
和company-name
列的数据库表city
。我想在mysql中执行一个查找所有公司的查询
位于每个城市的小银行公司'位于。公司可能位于多个城市。
一种解决方案可以是:
select c1.company-name
from company c1
where not exists
((select city from company
where company.company-name = 'Small Bank Corporation')
except (select city from company c2
where c1.company-name = c2.company-name))
但是'除了'不能在mysql中工作。那么mysql中可能的解决方案是什么?
答案 0 :(得分:1)
不确定你是如何做到这么复杂的:
SELECT DISTINCT company_name
FROM company
WHERE city IN (
SELECT DISTINCT city FROM company WHERE company_name='Small Bank Corporation'
) AND company_name!='Small Bank Corporation'
这是您用英语表达的更直译。
值得注意的是,这些数据似乎没有正确规范化。
答案 1 :(得分:0)
子查询找到Small Bank Corporation所在的所有城市,然后主查询找到位于这些城市的所有公司。
SELECT DISTINCT s.company-name
FROM company s
WHERE city ALL (SELECT DISTINCT t.city FROM company t WHERE t.company-name = 'Small Bank Corporation')
AND t.company-name != s.company-name