我希望通过在order by子句中使用某种嵌套order by/order by的sql查询来对sql结果进行排序
我有以下数据:
TERM USER ITEM_NO SCORE
man sam 2 NULL
man sam 1 170
man jerry 1 100
man jerry 2 NULL
man sam 3 NULL我希望得到以下结果的顺序:
TERM USER ITEM_NO SCORE
man sam 1 170
man sam 2 NULL
man sam 3 NULL
man jerry 1 100
man jerry 2 NULL结果必须首先按分数降序排序(只为每个用户存储在item_no 1中)。但是,用户为所选术语创建的任何其他项也必须直接按照item_no顺序拾取和插入。
我当前的查询如下所示:
SELECT * FROM table WHERE term = 'man' ORDER BY SCORE DESC, ITEM_NO ASC...however这很简单,结果如下:
TERM USER ITEM_NO SCORE
man sam 1 170
man jerry 1 100
man sam 2 NULL
man jerry 2 NULL
man sam 3 NULL感谢您的任何建议。
发布于 2013-08-24 11:37:47
SELECT *,
(SELECT MAX(Score)
FROM TEST t2
WHERE t2.Term = t1.Term AND t2.User = t1.User GROUP BY t2.Term, t2. User) as max_score
FROM test t1
WHERE term = 'man'
ORDER BY max_score DESC, ITEM_NO ASC工作
或者其他具有相同结果的解决方案(我认为它有更好的性能,但您需要对其进行一些测试):
SELECT t1.*
FROM test t1
JOIN
(SELECT t2.Term, t2.User, score FROM Test t2 WHERE t2.Item_No = 1) t3
ON t1.Term = t3.Term AND t1.User = t3.User
ORDER BY t3.score DESC, t1.Item_No;发布于 2020-05-08 21:16:35
从‘表’中选择用户,ITEM_NO,分数,按2,3排序;
-- 2是USER列,3是ITEM_NO列
https://stackoverflow.com/questions/18414627
复制相似问题