在两列中查找重复的mySQL结果-GROUPBY不起作用
我有一个事件列表,我想为即将到来的事件找到重复的。由于同一事件可以有几个不同的事件标题,我认为这里最安全的赌注是查找当天在同一地点发生的事件,并从中手动删除重复的事件 任何提示都非常感谢 我试过了,没有日期,只是按照活动名称和地点名称进行分组,有一个类似的奇怪输出,其中唯一重复的是场馆名称和地点名称 试试这个:在两列中查找重复的mySQL结果-GROUPBY不起作用,mysql,group-by,duplicates,Mysql,Group By,Duplicates,我有一个事件列表,我想为即将到来的事件找到重复的。由于同一事件可以有几个不同的事件标题,我认为这里最安全的赌注是查找当天在同一地点发生的事件,并从中手动删除重复的事件 任何提示都非常感谢 我试过了,没有日期,只是按照活动名称和地点名称进行分组,有一个类似的奇怪输出,其中唯一重复的是场馆名称和地点名称 试试这个: select main_count,a.place_name,b.event_title, b.start_date from (select count(1)as main_count
select main_count,a.place_name,b.event_title, b.start_date from
(select count(1)as main_count, place_name from main WHERE start_date >= '".$todays_date."' group by place_name having count(1) >1) as a
left join
(select place_name, event_title, start_date from main) as b
on a.place_name = b.place_name
使用GROUP BY时,每个组只能得到一行。您选择的其他列将从组中随机选择
如果要查看重复组中的所有行,请使用查找重复项的查询连接表
SELECT t1.*
FROM main AS t1
JOIN (SELECT place_name, start_date
FROM main
WHERE start_date >= '$todays_date'
GROUP BY start_date, place_name
HAVING count(*) > 1) AS t2
ON t1.place_name = t2.place_name AND t1.start_date = t2.start_date
如果startdate在第一次查询中失败,请添加具有相同场馆名称、地点名称和开始日期的记录。。尝试先在数据库中运行它,而不是用代码来模拟问题,这样可以在继续使用项目代码之前获得良好的结果。好运气为什么使用左连接而不是内连接?总是会有匹配项。谢谢@Barmar,这是一样的,但我需要更具体一点,第二个查询必须依赖于第一个查询的main。您没有在正确的列上加入,您需要在place\u name和start\u date上加入。否则你会把不同日子的活动联系在一起。是的,这是真的,我没有在where子句中包括日期。感谢Gurumarked up的解释,我得到的结果更好,但它们仍然没有成对显示,重复后重复OK我添加了t1.place\u name=t2.place\u name和t1.start\u date=t2.start\u date按开始日期排序,现在看起来不错!
select main_count,a.place_name,b.event_title, b.start_date from
(select count(1)as main_count, place_name from main WHERE start_date >= '".$todays_date."' group by place_name having count(1) >1) as a
left join
(select place_name, event_title, start_date from main) as b
on a.place_name = b.place_name
SELECT t1.*
FROM main AS t1
JOIN (SELECT place_name, start_date
FROM main
WHERE start_date >= '$todays_date'
GROUP BY start_date, place_name
HAVING count(*) > 1) AS t2
ON t1.place_name = t2.place_name AND t1.start_date = t2.start_date