我有一个有两列的表:
+-------+--------+
| A | B |
+=======+========+
| 123 | 111 |
| 234 | 222 |
| 345 | 111 |
| 456 | 111 |
| 567 | 222 |
| 678 | 111 |
+-------+--------+
A = A列是主键,我必须传递输入111,222,查询应该找出哪一个在b列中出现最多
例如表111中的发生了4次因此我需要表A中每次出现的值
答案 0 :(得分:0)
您可以在b列上使用group by计数,然后使用desc按顺序选择最大计数,并仅选择前1行。如下所示
;WITH CTE AS (SELECT COUNT(1) CountB,B FROM TABLE3
WHERE B IN (111,222)
GROUP BY B )
SELECT TOP 1 CountB AS MaxCount,B FROM CTE ORDER BY CountB DESC
我在这里使用了COMMON TABLE EXPRESSION。
答案 1 :(得分:0)
SELECT `B` as popular
FROM your_table
WHERE `B` IN ('111','222')
GROUP BY `B`
ORDER BY COUNT(*) DESC
LIMIT 0, 1;
SELECT `A` FROM your_table WHERE B = PUTHEREPOPULAR;