gpt4 book ai didi

Mysql检查唯一数据

转载 作者:行者123 更新时间:2023-11-29 00:08:55 24 4
gpt4 key购买 nike

我有一个包含三个数据列的表:

DATE          ID1    ID2
//
2012-10-01 5 9
2012-10-01 3 6
2012-10-01 1 7
2012-10-01 0 2
2012-10-01 8 4
//
2012-10-08 6 5
2012-10-08 5 8 >>> should FLAG!
//
2012-10-15 9 6
2012-10-15 3 4
2012-10-15 9 7 >>> should FLAG!
//

对于每个 DATE 分组,ID1 和 ID2 中的 ID 应该是唯一的。

在我输入了一年的数据后,我可以运行什么查询来检查我没有输入任何 ID?

我可以通过每次输入日期来手动检查:

SELECT id FROM table a JOIN table b ON a.id = b.id
WHERE a.date = 2012-10-01 AND a.ID1 = b.ID1 ...

但是,对于一年的日期,这是不切实际的。

最佳答案

您可以使用此查询:

SELECT date, id1, id2 FROM data d 
WHERE EXISTS (
SELECT * FROM data d2
WHERE d2.date = d.date AND (
d2.id1 = d.id2 OR d2.id2 = d.id1
OR (d.id1=d2.id1 AND d.id2 <> d2.id2)
OR (d.id2=d2.id2 AND d.id1 <> d2.id1)
)
)

这将选择具有与同一日期的另一个 ID 匹配的 ID 的行,或者只有一个 ID 匹配(但不是两者都匹配)的行。

编辑:修复了 @a1ex07 指出的第二种情况

编辑 2:下面的备选方案。

或者如果你愿意,这也是等价的:

SELECT d.date, d.id1, d.id2 FROM data d 
INNER JOIN (
SELECT date, id FROM (
SELECT date, id1 AS id FROM data
UNION ALL
SELECT date, id2 AS id FROM data
) AS tmp
GROUP BY date, id HAVING COUNT(*) > 1
) AS dupes
WHERE d.date = dupes.date AND (d.id1 = dupes.id OR d.id2 = dupes.id)

关于Mysql检查唯一数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184367/

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