gpt4 book ai didi

mysql - 查找一列的重复项,但仅当另一列具有相同值时才返回结果

转载 作者:行者123 更新时间:2023-11-29 16:05:14 25 4
gpt4 key购买 nike

我想找到给定列中重复(重复)的值,但仅当该行中的另一列相同时才返回重复值。

也许举个例子会更清楚。给定一个名为过滤器的表,我有 3 列(id、名称、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。但如果它们都一样,那么我想返回。

我正在考虑使用子查询,但不知道如何连接它们。我怎样才能做到这一点?

最佳答案

您可以为此使用聚合以及 having 子句:

select filter_type
from filters
group by filter_type
having count(*) > 1 and
min(name) = max(name)

关于mysql - 查找一列的重复项,但仅当另一列具有相同值时才返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55803488/

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