除了mysql之外的替代方案

时间:2014-11-21 14:02:49

标签: mysql

我有一个包含companycompany-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中可能的解决方案是什么?

2 个答案:

答案 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