假设我有一个MySQL数据库,表中包含以下五个记录:
ID: 1
Field1: A
Field2: B
Field3: C
ID: 2
Field1: D
Field2: E
Field3: F
ID: 3
Field1: A
Field2: H
Field3: I
ID: 4
Field1: J
Field2: K
Field3: A
ID: 5
Field1: M
Field2: D
Field3: O
Run Code Online (Sandbox Code Playgroud)
请注意以下值是重复的:
ID 1,字段1具有与ID 3,字段1和ID 4,字段3相同的值.
ID 2,字段1具有与ID 5,字段2相同的值.
是否有SELECT语句可以找到所有上述重复项?
它是可行但不确定它是否比在应用程序级别执行它更有效:
你的桌子:
mysql> select * from test;
+----+--------+--------+--------+
| id | field1 | field2 | field3 |
+----+--------+--------+--------+
| 1 | A | B | C |
| 2 | D | E | F |
| 3 | A | H | I |
| 4 | J | K | A |
| 5 | M | D | O |
+----+--------+--------+--------+
5 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
选择找到欺骗:
mysql> select count(value) as dupe_count,value from (select field1 as value from test union all select field2 from test union all select field3 from test) as tbl group by value having count(value) > 1 order by 1 desc;
+------------+-------+
| dupe_count | value |
+------------+-------+
| 3 | A |
| 2 | D |
+------------+-------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
基本上你将三列合并成一个然后寻找欺骗
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |