Sql 如何从与之对应的另一列中获取输入和值的最大计数
Sql 如何从与之对应的另一列中获取输入和值的最大计数,sql,Sql,我的表有两列: +-------+--------+ | A | B | +=======+========+ | 123 | 111 | | 234 | 222 | | 345 | 111 | | 456 | 111 | | 567 | 222 | | 678 | 111 | +-------+--------+ A=列A是主键,我必须传递输入111222,查询应该找出其中哪一个在列b中发生最多 因为表1
我的表有两列:
+-------+--------+
| A | B |
+=======+========+
| 123 | 111 |
| 234 | 222 |
| 345 | 111 |
| 456 | 111 |
| 567 | 222 |
| 678 | 111 |
+-------+--------+
A=列A是主键,我必须传递输入111222,查询应该找出其中哪一个在列b中发生最多
因为表111中的eg发生了4次,所以我需要表A中的值,用于111的每次发生您可以使用b列上的group by获得计数,然后使用count上的order 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
我在这里使用了常用的表表达式 查询
我看不出有什么问题。使用第一个查询确定最常见的值,使用第二个查询获取ID。您的问题是什么?输入值都是111和222 sql应该首先确定哪一个是最常见的,然后根据结果从列A中选择值问题是我是sql新手;)@TimSchmelter都是整数类型在这种情况下,期望的结果应该是123345456678您不需要两个查询。看起来很简单很好,但我使用的是DB2,limit func在这里不起作用,我想这是为了从所有值中获得第一个更大的值,对吗?
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;