gpt4 book ai didi

mysql - UNION 会覆盖以前的结果吗?

转载 作者:行者123 更新时间:2023-11-29 12:39:57 25 4
gpt4 key购买 nike

我对同一个表有两个查询,我需要获取第一个结果集中未出现的结果。

有几种方法可以到达那里(我不要求一种),我的第一次尝试是这样的:

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

但是 12345 确实出现在第一个结果集中(UNION 之前的查询)。

为什么会这样?

编辑:

custom_order_id 没有索引,也不是主键(尽管它实际上是唯一的) - UNION 是否需要(唯一)索引或 pk 将行识别为 < em>已经在第一个结果集中?

最佳答案

UNION 使用整个元组来确定行是否唯一。在你的情况下,那就是(订单,测试)。

由于您的一半答案测试设置为"is",另一半测试设置为“否”,因此您最终可能会得到多个具有相同 ID 的订单(一个表示是,一个表示否)。

关于mysql - UNION 会覆盖以前的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com