基于两个字段的PHP和MySQL搜索

基于两个字段的PHP和MySQL搜索,php,mysql,sql,Php,Mysql,Sql,好的,所以我理解了如何基于一个搜索参数执行mysql查询以返回结果。但是我有一个包含用户名和数据的表。每个用户名的数据应该是唯一的,但我想返回数据可能在多个用户名上重叠的任何实例。例如 Username | Data Field ---------------------------------------------- Test | Abcd1234 Test2 | efgh5678 Test3 | Abcd1234 Test

好的,所以我理解了如何基于一个搜索参数执行mysql查询以返回结果。但是我有一个包含用户名和数据的表。每个用户名的数据应该是唯一的,但我想返回数据可能在多个用户名上重叠的任何实例。例如

    Username | Data Field
    ----------------------------------------------
    Test     | Abcd1234
    Test2    | efgh5678
    Test3    | Abcd1234
    Test4    | efgh5678

我希望我的php脚本返回在数据字段中发现重复条目的所有实例。请注意,数据字段和用户名字段在此表中都不是唯一的。每当用户完成一个操作时,就会填充该表,因此每个用户名都应该有许多条目,但每次都应该有相同的数据字段。我只想检查两个不同的用户名是否具有相同的数据字段。有人知道如何在php或mysql select语句中实现这一点吗?可能需要不止一个查询,这没关系。我曾尝试搜索如何根据用户名查找重复的电子邮件,但我发现的结果更多的是防止重复注册。

基本上,您需要计算每个数据字段的唯一用户数。这是一个聚合查询:

select data, count(distinct username) as numusers
from table t
group by data;
您应该能够通过此查询获取唯一的用户名:

select data, count(distinct username) as numusers,
       group_concat(distinct username) as users
from table t
group by data
having count(distinct username) > 1;

这将创建一个以逗号分隔的“使用”相同数据的用户列表。

是否尝试修复此表以删除重复项?因为您在下面有一个关于尝试查找重复项的有效答案,但是如果您的目的是尝试修复重复项,则有另一种方法可供选择。不,我只想查找它们。谢谢,这看起来会起作用。现在我只需要让phpmyAdmin接受它。