一尘不染

SELECT ID具有ID的最大数量

sql

有一个带item_idcolor_id的产品表。我正在尝试使用大多数非null实例获取color_id。

这将失败:

SELECT color_id 
  FROM products 
 WHERE item_id=1234 
 GROUP BY item_id 
HAVING MAX(COUNT(color_id))

Invalid use of group function

SELECT color_id, COUNT(color_id)
  FROM products 
 WHERE item_id=1234 
 GROUP BY item_id

退货

color_id count
1, 323
2, 122
3, 554

我正在寻找具有最多实例的color_id 3。

有没有2个查询就可以轻松获得我想要的东西的方法吗?


阅读 165

收藏
2021-03-10

共1个答案

一尘不染

SELECT color_id AS id, COUNT(color_id) AS count
FROM products
WHERE item_id = 1234 AND color_id IS NOT NULL
GROUP BY color_id
ORDER BY count DESC
LIMIT 1;

这将为您提供color_id以及该color_id上的计数,该计数按从最大到最小的顺序排列。我想这就是你想要的。


供您编辑…

SELECT color_id, COUNT(*) FROM products WHERE color_id = 3;
2021-03-10