繁体   English   中英

如何从一个使用SQL查询独立排序的表中合并两个结果集?

[英]How to combine two result sets from one table sorted independently using one SQL query?

这是我必须在实际项目中解决的简化任务。 在此项目中,数据存储在HSQLDB中。 使用JDBC访问数据。

我有一张桌子:

name | flag
-----------
aa   | 1
bb   | 0
cc   | 1
dd   | 0
ee   | 1
ff   | 0

我需要撰写查询以获取下表:

name | flag
-----------
aa   | 1
cc   | 1
ee   | 1
ff   | 0
dd   | 0
bb   | 0

最终表就像采用flag = 1的行并升序排序,采用flag = 0的行并降序排序,结果依次合并。

请注意,标志= 1的行和标志= 0的行具有相反的排序顺序。

可以在SQL中执行吗? 我不想进行两个查询并以Java代码手动合并ResultSet。

在任何SQL中,仅应用最外面的顺序,因此必须在此完成。

我不知道这是否可以在您的SQL方言中使用(并且无法检查对不起),但是您可以这样做

SELECT name, flag
FROM  'table'
ORDER BY
    flag desc,
    CASE WHEN flag = 1 THEN name ELSE '' END,
    CASE WHEN flag = 0 THEN name ELSE '' END DESC

尝试这个:

SELECT name, flag
FROM 'table'
ORDER BY flag desc, name

让数据库尽一切可能进行工作。 不要在Java中执行此类操作。 认为“ SQL首先”。

order by可以占用多个列:

select *
from table
order by flag desc, name asc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM