gpt4 book ai didi

MySQL查询查找不存在且具有多个重复值的记录

转载 作者:行者123 更新时间:2023-11-29 23:29:38 27 4
gpt4 key购买 nike

我有两个类似的表,我需要找到一个表中存在的任何记录,但另一个表中不存在,但我必须找到这些记录的唯一值有多个重复值。

表 1:

TId 日期类型 金额
1 2014-02-01 23 25.34
2 2014-02-01 23 46.95
3 2014-02-01 23 46.95
4 2014-02-01 23 25.34
5 2014-02-01 23 21.01

表 2:

TId 日期类型 金额
7 2014-02-01 23 25.34
8 2014-02-01 23 46.95
9 2014-02-01 23 21.01

我需要查询两个表以从表 1 中查找记录 3 和 4。问题是我在表 2 中的记录 7 和 8 中找到匹配项。我使用了“NOT EXISTS”和“JOIN”但似乎无法得到我正在寻找的结果。

最佳答案

我不能 100% 确定您想要查找的内容,但根据日期、类型和金额,您似乎想要表 1 中不在表 2 中的记录。

如果是这样,左连接并检查字段上的 NULL 可能是最好的方法:-

SELECT table1.*
FROM table1
LEFT OUTER JOIN table2
ON table1.Date = table2.Date
AND table1.Type = table2.Type
AND table1.Amount = table2.Amount
WHERE table2.TId IS NULL

可能像这样(取决于您的具体要求)。这应该从 table1 中获取所有记录,并将其与日期、类型和金额匹配且 tid 是该记录的第一个记录的记录连接起来。然后加入表2。如果 table2 上没有匹配项,或者有匹配项但 table1 上的记录不是第一个匹配的记录,则记录将被输出。

仅当 table2 上没有重复项时才有效。

SELECT table1.*
FROM table1
LEFT OUTER JOIN
(
SELECT Date, TYPE, AMOUNT, MIN(TId) AS TId
FROM table1
) t11
ON table1.Date = t11.Date
AND table1.Type = t11.Type
AND table1.Amount = t11.Amount
AND table1.TId = t11.TId
LEFT OUTER JOIN table2
ON table1.Date = table2.Date
AND table1.Type = table2.Type
AND table1.Amount = table2.Amount
WHERE (t11.TId IS NULL
AND table2.TId IS NOT NULL)
OR table2.TId IS NULL

关于MySQL查询查找不存在且具有多个重复值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655899/

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