首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中order by内嵌套的order by/order by

SQL中order by内嵌套的order by/order by
EN

Stack Overflow用户
提问于 2013-08-24 11:27:11
回答 2查看 22.7K关注 0票数 5

我希望通过在order by子句中使用某种嵌套order by/order by的sql查询来对sql结果进行排序

我有以下数据:

代码语言:javascript
复制
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

我希望得到以下结果的顺序:

代码语言:javascript
复制
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顺序拾取和插入。

我当前的查询如下所示:

代码语言:javascript
复制
SELECT * FROM table WHERE term = 'man' ORDER BY SCORE DESC, ITEM_NO ASC

...however这很简单,结果如下:

代码语言:javascript
复制
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

感谢您的任何建议。

EN

回答 2

Stack Overflow用户

发布于 2013-08-24 11:37:47

代码语言:javascript
复制
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

工作

或者其他具有相同结果的解决方案(我认为它有更好的性能,但您需要对其进行一些测试):

代码语言:javascript
复制
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;
票数 3
EN

Stack Overflow用户

发布于 2020-05-08 21:16:35

从‘表’中选择用户,ITEM_NO,分数,按2,3排序;

-- 2是USER列,3是ITEM_NO列

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18414627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档