UNION ALL
私は1で結合されている2つのクエリを持っています:
--Query 1
SELECT Flavor, Color
FROM Friends
--Query 2
SELECT Flavor,
(SELECT TOP 1 Color
FROM Rainbows
WHERE Rainbows.StrangerID = Strangers.StrangerID
ORDER BY Wavelength DESC
) AS Color
FROM Strangers
もちろん、どちらも別々にうまく動作しますが、 と組み合わせるとUNION ALL
:
SELECT Flavor, Color
FROM Friends
UNION ALL
SELECT Flavor,
(SELECT TOP 1 Color
FROM Rainbows
WHERE Rainbows.StrangerID = Strangers.StrangerID
ORDER BY Wavelength DESC
) AS Color
FROM Strangers
クエリは次のエラーで失敗します。
メッセージ 104、レベル 15、状態 1、行 3
ORDER BY 項目は、ステートメントに UNION 演算子が含まれている場合、選択リストに表示する必要があります。
UNION ALL を含むステートメントで ORDER BY を使用するにはどうすればよいですか?
コピー&ペースト可能な例
CREATE TABLE Friends (Flavor int, Color int)
CREATE TABLE Strangers (Flavor int, StrangerID int)
CREATE TABLE Rainbows (StrangerID int, Color int, Wavelength int)
go
SELECT Flavor, Color
FROM Friends
UNION ALL
SELECT Flavor,
(SELECT TOP 1 Color
FROM Rainbows
WHERE Rainbows.StrangerID = Strangers.StrangerID
ORDER BY Wavelength DESC
) AS Color
FROM Strangers
go
DROP TABLE Rainbows
DROP TABLE Strangers
DROP TABLE Friends
サーバー: メッセージ 104、レベル 15、状態 1、行 2
ステートメントに UNION 演算子が含まれている場合、ORDER BY アイテムは選択リストに表示される必要があります。
脚注
- 1架空の例。か否か。