Table1
有3列:col1
,col2
,col3
我SELECT
DISTINCT
col1
col3
的所有col2 DESC
值col1
等于某个值,然后按col2
对其进行排序,但又有SELECT DISTINCT (col1), col2
FROM `Table1`
WHERE `col3` = 'X'
ORDER BY `col2` DESC
col1
结果显示了相应的, col2
值?
我尝试了以下但是没有用:
col1
上述内容不会产生col2
的不同值。如果我删除" {{1}}",则它会显示{{1}}的不同值,但它不会显示相应的{{1}}值。
那我该怎么办?
答案 0 :(得分:9)
也许是这样的:
SELECT col1, MAX(col2) col2_max
FROM Table1
WHERE col3 = 'X'
GROUP BY col1
ORDER BY col2_max
您可以在此SQL Fiddle中使用它。
答案 1 :(得分:3)
我非常确定mySQL支持GROUP BY
子句,并且如果你想要{em>最大值col2
,这应该可以得到你想要的结果:
SELECT col1, MAX(col2) as col2
FROM Table1
WHERE col3 = 'X'
GROUP BY col1
ORDER BY col2
答案 2 :(得分:1)
我假设您希望每个col2
获得最大col1
:
SELECT tm.*
FROM (
SELECT DISTINCT col1
FROM table1
WHERE col3 = 'X'
) t
JOIN table tm
ON id =
(
SELECT id
FROM table1 ti
WHERE ti.col3 = 'X'
AND ti.col1 = t.col1
ORDER BY
col2 DESC
LIMIT 1
) col2
ORDER BY
col2 DESC
在(col3, col1, col2)
上创建一个索引,以便快速工作。
<强>更新强>
如果您只需要这两列,那么查询确实可以变得更简单:
SELECT col1, MAX(col2) AS maxcol2
FROM table1
WHERE col3 = 'X'
GROUP BY
col1
ORDER BY
maxcol2 DESC
但如果你需要整个记录(以及表中可能包含的附加字段),你需要初始语法。
答案 3 :(得分:-1)
SELECT t.col1, max(t.col2)
FROM Table1 t
WHERE t.col3='X'
GROUP BY t.col1
ORDER BY t.col2 DESC;
编辑:这个答案经过了多次修改,保留了最准确的答案。