如何聯合使用Union和Order by


如果使用類似下面的SQL語句:

select columnA, columnB from tableA where columnA = 'Condition 1'
union
select columnC, columnD from tableB where columnC = 'Condition 1'
order by columnA asc

 系統會報錯:
消息 207,級別 16,狀態 1,第 4 行
列名 'columnA' 無效。
消息 104,級別 16,狀態 1,第 4 行
如果該語句包含 UNION、INTERSECT 或 EXCEPT 運算符,則 ORDER BY 項必須出現在選擇列表中。

問題原因:
既然把多行給union了,把每列叫成什么名字都是不妥當的。。。只要采用列的序號即可。

select columnA, columnB from tableA where columnA = 'Condition 1'
union
select columnC, columnD from tableB where columnC = 'Condition 1'
order by 2 asc

這里需要注意的是,序號從1開始,如果指定的序號不在允許的范圍內,系統會報出一個異常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM