PHP和MySQL搜索基于两个字段

时间:2014-08-25 18:59:18

标签: php mysql sql

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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;

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