我试图在满足条件时对表的某些行进行计数。下面是我正在尝试做的事情的示例。
SELECT (CASE
WHEN COUNT(*)<9 WHERE (tb1.col IS NULL OR tb1.col=1) THEN 1
WHEN COUNT(*)<9 WHERE tb1.col=2 THEN 2
WHEN COUNT(*)<9 WHERE tb1.col=3 THEN 3
WHEN COUNT(*)<9 WHERE tb1.col=4 THEN 4
WHEN COUNT(*)<9 WHERE tb1.col=5 THEN 5
WHEN COUNT(*)<9 WHERE tb1.col=6 THEN 6
END)
WHERE tb1.id=X
我知道它并不完全像那样工作,但我想知道,因为我必须再制作 12 个“何时……那么”,是否还有其他方法可以做到这一点。基本上我正在尝试计算满足条件的行数并检查是否少于 9 行。再重复 17 次。
最佳答案
按 tb1.col
对数据进行分组并获取每组的计数。然后找到第一个小于 9 的值。
SELECT MIN(col) AS val
FROM (
SELECT IFNULL(tb1.col, 1) AS col, COUNT(*) AS count
FROM yourTable AS tb1
WHERE tb1.id = X
GROUP BY col
) x
WHERE count < 9
关于mysql - CASE 内带有条件的 SELECT 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46591416/