SF:查询以检索重复项



Symfony Project 上,使用PHP和MySQL,我正在尝试找到一种方法,以获取一种方法,以获取所有行以查看两个字段的潜在重复用户仅:lastname,firstName。

我有一个标准用户表:

id firstname lastname email otherfield1 ...
1 john smith john.smith@yahoo.fr otherfield1value1 ...
2 john smith john.smith@gmail.com otherfield1value2 ...
3 john doe john.doe@gmail.com otherfield1value3 ...
4 john doe john.doe@gmail.com otherfield1value4 ...
5 jane doe jane.doe@somewhere.com otherfield1value5 ...

如果我做A:

SELECT GROUP_CONCAT(u1.id) FROM user AS u1 GROUP BY u1.firstName, u1.lastName HAVING count(u1.id) > 1;

我从预期获得所有重复ID

1,2
3,4

,但我想拥有所有重复项的所有信息:id,lastname,firstName,但其他字段:电子邮件,出生日期...使用group_concat我显然不能这样做:

SELECT GROUP_CONCAT(u1.id), email FROM user AS u1 GROUP BY u1.firstName, u1.lastName HAVING count(u1.id) > 1;

这使我按小组"只"一封电子邮件,因为它应该(但不按照我的意愿(:

1,2 john.smith@yahoo.fr 
3,4 john.doe@gmail.com

我可以做SELECT GROUP_CONCAT(u1.id, ',', u1.email, ',', u1.otherfield SEPARATOR '|') FROM user AS u1 GROUP BY u1.firstName, u1.lastName HAVING count(u1.id) > 1;这给我带来了完整的结果:

1,john.smith@yahoo.fr,otherfield1value1|2,john.smith@gmail.com,otherfield1value2
3,john.doe@gmail.com,otherfield1value3|4,john.doe@gmail.com,otherfield1value4

,但以非真正可用的形式:我将不得不将两次分开并循环浏览结果...对Symfony请求结果而不是最佳。

所以我想到了一个子查询带来ID并在子句中使用它。像

SELECT u.* FROM  user u WHERE u.id IN (THE_SUBQUERY_FOR_DUPLICATE_IDS);

但是group_concat请求没有带来所有ID的列表,我只会得到ID组列表。

SELECT u.* FROM  user u WHERE u.id IN (
    SELECT GROUP_CONCAT(u1.id) FROM user AS u1 GROUP BY u1.firstName, u1.lastName HAVING count(u1.id) > 1
);

崩溃...由于子查询带有数组。

我想知道我是否可以将group_concat查询的结果限制为ID的常规列表:1,2,3,4 ...或者,如果有另一种方法可以为重复的用户(而不仅仅是IDS(引入一个查询所有信息吗?

我宁愿不必进行第一个查询,然后在PHP中加入ID,然后查询完整的结果(=所有字段(

当然,该请求最好在学说语言中 :),但是如果给出的话,我也可以调整本机MySQL查询答案。

我建议使用 INNER JOIN,例如,以这样的方式适应它们:

SELECT GROUP_CONCAT(u1.id) var1, (...other variables...) FROM user AS u1 GROUP BY u1.firstName, u1.lastName INNER JOIN (SELECT GROUP_CONCAT(u1.id) var2 FROM user AS u1 GROUP BY u1.firstName, u1.lastName HAVING count(u1.id) > 1) duplicates_table ON user.var1=duplicates_table.var2

这只会得到您需要的结果。

相关内容

  • 没有找到相关文章

最新更新