2017-04-27 53 views
0

我想結合兩個表中包含IP地址,我可以按升序排序,它的工作原理。但是,當我想它結合,它解析錯誤這樣的「ORDER BY項目,如果語句中包含UNION,INTERSECT或EXCEPT運算符必須出現在選擇列表」。這裏是我的查詢我可以排序的IP地址,但當另一個表之間的聯合,它給了我一個錯誤

SELECT IP AS [IP Adress] FROM Inventory UNION ALL SELECT IP FROM Equip ORDER BY CAST('/' + IP + '/' AS hierarchyid)

+0

顯示您的樣本數據和期望的輸出 –

+0

但是在第一個查詢中的順序。如果你想排序它所有,包裝在一個cte和該類型是有趣的這種情況下 – scsimon

回答

0

它認爲你想排序第二個子查詢,你不能用聯盟做。如果你想對整個事物進行排序,那麼你應該將它包裝在圓括號中,並按照你創建的新列名稱進行排序。

( 選擇IP AS [IP地址] 從庫存 UNION ALL SELECT IP FROM裝備 ) ORDER BY CAST( '/' + [IP地址] + '/' 作爲HIERARCHYID)

+0

感謝您的答覆,但你可以給查詢的例子嗎?我使用了SQL服務器 –

+0

它好吧,我已經找到了解決辦法,就是這樣.. SELECT IP FROM(SELECT IP 從庫存 UNION ALL SELECT IP FROM裝備 )× ORDER BY CAST(」 /'+ IP +'/'AS hierarchyid) –

0

它確定,我已經找到了解決方案,在這裏它是..選擇IP從(選擇IP從清單聯盟所有選擇IP從設備)x ORDER BY CAST('/'+ IP +'/'AS hierarchyid)

相關問題