Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 打印所有重复的行_Mysql_Sql - Fatal编程技术网

Mysql 打印所有重复的行

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

现在,我有了下面的查询,它给出了具有相同名称的行的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 
    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指定了“相同的名称”。但是示例提供了按名字和姓氏分组的方法,因此我认为“相同的名称”表示“相同的名字和姓氏”,基本上是指“重复的行”