我想找到一个重复(重复)的给定列的值,但是仅当行中的另一列相同时才返回重复。
也许一个例子会更清楚。给定一个名为filter的表,我有3列(id,name,filter_type):
DESCRIBE filters;
+-------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| filter_type | varchar(255) | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+-------------------+--------------+------+-----+---------+----------------+
现在,我想选择所有重复的filter_types。很简单:
SELECT COUNT(*) as count, filter_type
FROM filters
GROUP BY filter_type_type HAVING count > 1;
+-------+-----------------+
| count | filter_type |
+-------+-----------------+
| 5 | Contact |
+-------+-----------------+
但是,如果名称列的值对于所有组都是相同的,我只想返回重复项。因此,在上面的结果中,我们重复了“联系”。重复5次。但我只想在所有5条记录具有相同的名称列值的情况下返回此结果。
SELECT name FROM filters WHERE filter_type = 'Contact';
+---------------------------+
| name |
+---------------------------+
| All |
| All |
| New |
| All |
| New |
+---------------------------+
由于5条记录的名称值不同,因此我不想返回“联系人” filter_type。但是,如果它们都相同,那么我想将其退回。
我当时在考虑使用子查询,但不确定如何连接它们。我该怎么办?
答案 0 :(得分:0)
您可以为此使用聚合以及File:SV Splash late.jpg
File:SV_Splash_late.jpg
File:Untitled-2.png
File:VikingPromo.jpg
index.php?title=Special:UnusedFiles&limit=100&offset=0
index.php?title=Special:UnusedFiles&limit=20&offset=0
index.php?title=Special:UnusedFiles&limit=250&offset=0
index.php?title=Special:UnusedFiles&limit=500&offset=0
index.php?title=Special:UnusedFiles&limit=50&offset=0
子句:
having