簡體   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