给出一个简单的表:
ColumnWhereIn ColumnWhere ColumnSearched
A 1234 1
A 1234 2
B 1234 3
B 1234 4
C 1234 5
C 1234 6
我想找到最大的ColumnSearched
值。因此,预期结果是:
{A: 2, B: 4, C: 6}
我尝试了以下查询:
SELECT mt.ColumnSearched AS cs, mt.ColumnWhereIn AS cwi FROM MyTable mt
WHERE (mt.ColumnSearched, mt.ColumnWhereIn) IN
(SELECT MAX(ColumnSearched), ColumnWhereIn FROM MyTable
WHERE ColumnWhere = 1234
AND ColumnWhereIn IN ('A', 'B', 'C')
GROUP BY ColumnWhereIn)
但是它不返回任何记录。显然,我可以像这样运行三个选择:
SELECT MAX(ColumnSearched) FROM MyTable
WHERE ColumnWhere = 1234 AND ColumnWhereIn = 'A'
但是我想知道是否有更清洁的解决方案。
只需将ColumnWhereIn
添加到SELECT和GROUP BY子句:
SELECT ColumnWhereIn, MAX(ColumnSearched) AS MaxColumnSearched
FROM MyTable
WHERE ColumnWhere = 1234
GROUP BY ColumnWhereIn