我有一个像这样的结果集:
ID | name | myvalue 1 | A1 | 22 2 | A2 | 22 3 | A3 | 21 4 | A4 | 33 5 | A5 | 33 6 | A6 | 10 7 | A7 | 10 8 | A8 | 10 9 | A9 | 5
我想要的是,只包括包含最高“myvalue”的行(在前面的例子中是33),然后:
ID | name | myvalue 4 | A4 | 33 5 | A5 | 33
IE查询应该选择最高的“myvalue”(IE 33)并且它应该删除具有myvalue<的行. 33
SELECT ..... WHERE myvalue = THE_HIGHEST_OF(myvalue)
希望能够清楚……
先感谢您
编辑:
我目前的查询是
SELECT *,(very long code that returns a integer as relevance score) AS myvalue FROM mytable HAVING myvalue = ????? ORDER BY myvalue DESC
现在最高的myvalue可以是10,20,30,任意数字……在最终结果集中我想只包含具有最高相关性得分的行
香港专业教育学院尝试使用GROUP BY,但我总是需要重复…
(very long code that returns a integer as relevance score) AS myvalue
…两次
解决方法
SELECT * FROM t WHERE myValue IN (SELECT max(myValue) From t);
编辑:
按照discussion with OP.
OP希望在WHERE子句中使用别名.但是,您只能在GROUP BY,ORDER BY或HAVING子句中使用列别名.
看看this answer.