Mysql 打印所有重复的行
现在,我有了下面的查询,它给出了具有相同名称的行的COUNT()。但是,假设我只是想把所有的行都打印出来Mysql 打印所有重复的行,mysql,sql,Mysql,Sql,现在,我有了下面的查询,它给出了具有相同名称的行的COUNT()。但是,假设我只是想把所有的行都打印出来 SELECT l.id, c.first_name, c.last_name, l.source AS 'affiliateId', COUNT(*), c.email, ls.create_date, ls.buyer FROM lead_status AS ls INNER JOIN leads AS l ON l.id = ls.lead_id
SELECT l.id, c.first_name, c.last_name,
l.source AS 'affiliateId', COUNT(*),
c.email, ls.create_date, ls.buyer
FROM lead_status AS ls
INNER JOIN leads AS l ON l.id = ls.lead_id
INNER JOIN contacts AS c ON c.lead_id = l.id
WHERE ls.discriminator = 'AUTO_POST' AND l.affiliate_id=1003
AND ls.winner =1 AND l.test =0
AND l.create_date BETWEEN '2011-10-03' AND '2011-10-19'
GROUP BY c.first_name, c.last_name HAVING COUNT(*)>1;
所以我试着从:
joe smith 3
lisa martin 2
对下列事项:
joe smith
joe smith
joe smith
lisa martin
lisa martin
救命啊 您可以使用数字表连接:
SELECT T1.col1, T2.col2
FROM
(
-- your long query goes here
) T1
JOIN numbers
ON numbers.x <= T1.cnt
您可以使用数字表联接:
SELECT T1.col1, T2.col2
FROM
(
-- your long query goes here
) T1
JOIN numbers
ON numbers.x <= T1.cnt
你可以使用表达式
COUNT(不同的名字)
,然后通过groupby摆脱
所以查询将是
SELECT l.id, c.first_name, c.last_name, l.source AS 'affiliateId', COUNT(DISTINCT c.first_name, c.last_name) as CountRows,
c.email, ls.create_date, ls.buyer FROM lead_status AS ls
INNER JOIN leads AS l ON l.id = ls.lead_id
INNER JOIN contacts AS c ON c.lead_id = l.id
WHERE ls.discriminator = 'AUTO_POST' AND l.affiliate_id=1003
AND ls.winner =1 AND l.test =0 AND l.create_date BETWEEN '2011-10-03' AND '2011-10-19'
HAVING CountRows>1
你可以使用表达式COUNT(不同的名字)
,然后通过groupby摆脱
所以查询将是
SELECT l.id, c.first_name, c.last_name, l.source AS 'affiliateId', COUNT(DISTINCT c.first_name, c.last_name) as CountRows,
c.email, ls.create_date, ls.buyer FROM lead_status AS ls
INNER JOIN leads AS l ON l.id = ls.lead_id
INNER JOIN contacts AS c ON c.lead_id = l.id
WHERE ls.discriminator = 'AUTO_POST' AND l.affiliate_id=1003
AND ls.winner =1 AND l.test =0 AND l.create_date BETWEEN '2011-10-03' AND '2011-10-19'
HAVING CountRows>1
将结果集与“姓名”和“姓氏”字段上的“联系人”标记连接起来(假设“姓氏+姓氏”构成唯一键)将结果集与“姓氏”和“姓氏”字段上的“联系人”标记连接起来(假设“姓氏+姓氏”构成唯一键)我不记得MySQL是否支持子查询,但我会这样做
select
first, last
from
table where id in (select id from table group by first, last having count(*) > 1)
order by
first, last
我不记得MySQL是否支持子查询,但我会这样做
select
first, last
from
table where id in (select id from table group by first, last having count(*) > 1)
order by
first, last
在出现重复的表上添加另一个联接。对于连接条件,使标识信息相同(例如c.first\u name=c2.first\u name和c.last\u name=c2.last\u name
,或l.id=c2.id
),并且记录的任何区别都不同(例如l.create\u date
)。最后,根据包含重复项的记录的ID进行分组,或者选择不同的行,以避免重复。在不知道表架构或重复可能发生的位置的情况下,我无法更具体地说明。在出现重复的表上添加另一个联接。对于连接条件,使标识信息相同(例如c.first\u name=c2.first\u name和c.last\u name=c2.last\u name
,或l.id=c2.id
),并且记录的任何区别都不同(例如l.create\u date
)。最后,根据包含重复项的记录的ID进行分组,或者选择不同的行,以避免重复。如果不知道表模式或重复项可能出现的位置,我无法更具体地说明。什么是表模式(CREATE
语句)?哪些表有重复项?例如,一个联系人可能在联系人表中出现多次,或者可能有多个潜在客户引用同一个联系人?表架构是什么(CREATE
语句)?哪些表有重复项?例如,一个联系人可能在联系人表中出现多次,或者可能有多个潜在客户引用同一个联系人?并且完成了什么?(严肃的问题)他希望所有的行都打印出COUNT(firstname,lastname)吗?这就是我的解决方案你是对的-OP指定了“相同的名字”。但是这个例子提供了按名字和姓氏分组的方法,所以我认为“相同的名字”意味着“相同的名字和姓氏”,基本上意味着“重复的行”。完成了什么?(严肃的问题)他希望所有的行都打印出COUNT(firstname,lastname)吗?这就是我的解决方案你是对的-OP指定了“相同的名称”。但是示例提供了按名字和姓氏分组的方法,因此我认为“相同的名称”表示“相同的名字和姓氏”,基本上是指“重复的行”