Mysql 获取唯一集和重复集的差异-SQL
我有两个类似的数据集(表、视图、CTE),其中一个包含唯一的行(由Mysql 获取唯一集和重复集的差异-SQL,mysql,sql,join,except,Mysql,Sql,Join,Except,我有两个类似的数据集(表、视图、CTE),其中一个包含唯一的行(由DISTINCT或GROUP by保证),第二个包含重复的行(不涉及主键约束) 如何获得两个数据集的差异,以便在MySql 8中只获得第二个数据集的副本? 假设我有一个名为Animals的表,它存储名称和物种 +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Ex
DISTINCT
或GROUP by
保证),第二个包含重复的行(不涉及主键约束)
如何获得两个数据集的差异,以便在MySql 8中只获得第二个数据集的副本?
假设我有一个名为Animals的表,它存储名称
和物种
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | NULL | |
| NAME | varchar(255) | YES | | NULL | |
| SPECIES | varchar(255) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
ANIMALS
+----+---------+-------------+
| ID | NAME | SPECIES |
+----+---------+-------------+
| 1 | Lion | Carnivorous |
| 2 | Giraffe | Herbivores |
| 3 | Zebra | Herbivores |
| 4 | Trutle | Herbivores |
| 5 | Tiger | Carnivorous |
| 6 | Bear | Carnivorous |
+----+---------+-------------+
有了它,我定义了视图DUPLICATED
CREATE VIEW DUPLICATED AS
SELECT * FROM ANIMALS
UNION ALL
SELECT * FROM ANIMALS WHERE SPECIES = "Carnivorous";
(复制集合中的所有食肉动物)
现在我想了解
SELECT*FROM ANIMALS
和DUPLICATED
之间的区别,或者反之亦然,基本上,从ANIMALS
获取所有食肉动物,基本上,您可以通过任何字段组合进行分组,以确保结果中记录的唯一性。您还没有提供查询或表的模式,因此我将尝试使用一个通用示例来演示这一点。你可以理解我的意思,把它应用到你的问题上
SELECT field1, field2, field3 COUNT(*)
FROM MyTable
GROUP BY field1, field2, field3
HAVING COUNT(*) > 1
请把你自己的代码放在更好的位置
SELECT field1, field2, field3 COUNT(*)
FROM MyTable
GROUP BY field1, field2, field3
HAVING COUNT(*) > 1