我想ORDER BY
MINUS
查询的结果。
我的第一次尝试不起作用:
SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar'
ORDER BY foo
你会怎么做?
oops:我正在ORDER BY table2.foo
而不仅仅是ORDER BY foo
。现在它有效。
答案 0 :(得分:8)
但是,要回答您的问题,您可以使用with with query:
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
答案 1 :(得分:1)
如果MINUS被UNION取代,则ORDER BY将应用于UNION的结果。你确定这不是你用MINUS得到的吗?
如果不能直接使用,那么:
SELECT result.*
FROM (SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar') AS result
ORDER BY foo;
但是,我认为这不太可能是必要的。
答案 2 :(得分:1)
您可以使用位置而不是列名称。假设foo是结果中的第一列:
SELECT *
FROM Table1
MINUS
SELECT *
FROM table2
WHERE table2.foo = 'bar'
ORDER BY 1
您通常不希望结果依赖于特定的列顺序,因此我只会将其用于adhoc查询。