我在同一张表上有两个查询,我需要得到的结果没有出现在第一个结果集中。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