我在同一張表上有兩個查詢,我需要得到的結果沒有出現在第一個結果集中。UNION是否覆蓋以前的結果?'
有幾種方法可以到那裏(我不問了一個),我第一次嘗試是這樣的:
SELECT * FROM
(
SELECT
o.custom_order_id AS 'order',
'yes' AS 'test'
FROM orders
WHERE <first criteria>
UNION
SELECT
o.custom_order_id AS 'order',
'no' AS 'test'
FROM orders
WHERE <second criteria>
) x
WHERE x.test = 'no'
UNION
不追加其已經出現在第一個結果集行。
其實我得到像
12345 no
行,但(UNION
前查詢)12345
會出現在第一個結果集。
爲什麼?
編輯:
custom_order_id
沒有索引,而不是主鍵(雖然它實際上是唯一的) - 不UNION
需要一個(唯一)的索引或峯承認,連續被評爲已經在一-resultset?
'UNION'將返回唯一的**行**。 「12345是」和「12345否」是**兩個唯一行**。在你的例子中,如果你刪除'test'字段,你會得到你想要的。 – 2014-10-08 10:12:22
@AdrianoRepetti這正是我的錯誤。 – DanFromGermany 2014-10-08 10:16:35
有人能告訴我我的答案有什麼問題嗎? downvote困惑了我的廢話:) – Kleskowy 2014-10-08 10:19:33