如果使用類似下面的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開始,如果指定的序號不在允許的范圍內,系統會報出一個異常
