我有下面的場景(下表),我想根據它們是否爲NULL來選擇'X'或'Y'。Oracle UNION ALL在查詢中保留記錄的順序
X Y pick
null not null Y
not null not null X
not null null X
包含數據的 'X' 和 'Y' 或UNION行ALLed象下面這樣:
select 'X' as a
union all
select 'Y' as a
所以,我想,得到了下面的SQL,但不知道的「ROWNUM < = 1 「部分。如果UNION ALL保留 我查詢兩行的順序,這將起作用(對於X和Y都不爲空的情況)。
select a from
(
select 'X' as a
union all
select 'Y' as a
) where a is not null and rownum<=1;
select a from
(
select null as a
union all
select 'Y' as a
) where a is not null and rownum<=1;
select a from
(
select 'X' as a
union all
select null as a
) where a is not null and rownum<=1;
是上述正確的方式去做這件事嗎?任何有識之士將不勝感激
「UNION」或「UNION ALL」的結果是一個集合。集*沒有*訂單。即使你在簡單的測試中觀察到明顯的順序,你也不應該依賴這樣的命令。 –