我想按一列對查詢結果進行排序,如果它為空,則按第二列排序。
在 MSSQL 中,我通常使用 COEALSCE 函式來解決這個問題,所以,我寫了ORDER BY COALESCE(Col1,Col2).
但是,雖然 SqlLite 中也存在 COALESCE 函式,但似乎我無法從查詢的“order by”部分呼叫它
你知道我如何對我的結果進行排序嗎?
使固定
COALESCE(Col1,Col2) 適用于“簡單”查詢,我真正想要的是對 UNION 查詢的結果進行排序。
CREATE TABLE FOO
(
int ID,
Date1 text,
Date2 text
)
insert into foo values(1,null,'2021-11-12T009:30:00');
insert into foo values(2,'2021-11-12T008:30:00',null);
-- THIS WORKS!
select * from FOO order by coalesce(Date1,Date2)
-- THIS FAILS :(
select * from foo where Date1 = '2021-11-12T008:30:00'
union all
select * from foo where Date2 = '2021-11-12T009:30:00'
order by coalesce(Date1,Date2)
uj5u.com熱心網友回復:
在 SELECT 子句中包含 COALESCE 并以此排序。IE:
select COALESCE(Date1,Date2) oby,* from foo where Date1 = '2021-11-12T008:30:00'
union all
select COALESCE(Date1,Date2),* from foo where Date2 = '2021-11-12T009:30:00'
order by oby
uj5u.com熱心網友回復:
將 放在UNION派生表中。
SELECT *
FROM (SELECT *
FROM foo
WHERE date1 = '2021-11-12T008:30:00'
UNION ALL
SELECT *
FROM foo
WHERE date2 = '2021-11-12T009:30:00') x
ORDER BY coalesce(date1,
date2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360104.html
標籤:sqlite
