我想ORDER BY
MINUS
查詢的結果。在使用MINUS的查詢中,你如何使用ORDER BY?
我第一次嘗試不起作用:
SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar'
ORDER BY foo
你會怎麼做呢?
oops:我在做ORDER BY table2.foo
而不只是ORDER BY foo
。現在它可以工作。
我想ORDER BY
MINUS
查詢的結果。在使用MINUS的查詢中,你如何使用ORDER BY?
我第一次嘗試不起作用:
SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar'
ORDER BY foo
你會怎麼做呢?
oops:我在做ORDER BY table2.foo
而不只是ORDER BY foo
。現在它可以工作。
然而,要回答你的問題,你可以使用與查詢:
with tmp_minus as (
SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar'
)
select * from tmp_minus
ORDER BY foo
你也應該能夠做到一個子查詢:
select * from (
SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar'
) tmp_minus
ORDER BY foo
如果減號是由UNION取代, ORDER BY將適用於UNION的結果。你確定這不是你用MINUS得到的嗎?
如果它不直接工作,那麼:
SELECT result.*
FROM (SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar') AS result
ORDER BY foo;
不過,我覺得這是不太可能是必要的。
您可以使用位置而不是列名稱。假設foo是在結果第一列:
SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar'
ORDER BY 1
你通常不想要的結果取決於特定的列順序,所以我只會用這個即席查詢。
他們都是同一張桌子我猜?所以你爲什麼使用減號? – frail
對不起,不好的例子。我改了它 – ladookie
你在做什麼基本上是一個昂貴的操作,需要全表掃描。所以如果您可以發佈一些示例數據,也許可以通過連接來解決(取決於數據)並且您是否需要所有數據?你可以有一個限制,可以避免全表掃描 – frail