【问题标题】:sql select if they have more than oncesql 选择是否有不止一次
【发布时间】:2014-03-08 19:38:10
【问题描述】:

我有两个共享相同 ID 的表:

表格颜色:

id  color
---------
1   blue
1   red
1   green
1   blue
2   green
2   yellow
2   orange
3   red
3   orange
3   yellow
3   orange

表名:

id   name
---------
1    John
2    Anna
3    Mike

查找任何颜色多次出现的名称的查询是什么。

例如:约翰和迈克是答案,因为约翰有两次蓝色,迈克也有两次橙色。

非常感谢

【问题讨论】:

标签: mysql sql


【解决方案1】:
SELECT A.name, B.color, count(*) 'color count' 
FROM Names A JOIN Colors B on A.id = B.id
GROUP BY A.id, B.color
HAVING Count(*)>1

在这里查看 http://sqlfiddle.com/#!2/ee040/3

【讨论】:

  • 约翰和迈克是答案,因为约翰有蓝色两次,迈克也有橙色两次
  • 您可能对此感兴趣:mysqlperformanceblog.com/2006/09/06/…
  • @a_horse_with_no_name 谢谢!我会考虑的。
【解决方案2】:
SELECT name, color, COUNT(*)
FROM Names
JOIN Colors
  ON Names.id = Colors.id
GROUP BY name, color
HAVING COUNT(*) > 1

【讨论】:

    【解决方案3】:
    SELECT DISTINCT n.name FROM Colour c
    INNER JOIN Names n ON (n.id = c.id)
    GROUP BY n.name, c.colour
    HAVING COUNT(*) > 1
    

    【讨论】:

      【解决方案4】:
      Select n.Name
      From names n
      Join colors c on c.ID = n.ID
      Group by n.Name
      Having count(c.color) <> count(distinct c.color)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-12
        • 2017-02-15
        • 2018-02-07
        • 2019-12-21
        • 1970-01-01
        • 2017-07-05
        • 1970-01-01
        相关资源
        最近更新 更多