【发布时间】:2013-12-17 14:23:01
【问题描述】:
我正在尝试创建一个查询语句,它通过列 (PhoneNumber) 将 Master 和 Query 表连接起来,并且仅检索重复的最后一条记录(如果存在)
大师
id PhoneNumber Flag Date
10009 425729233 N 2013-11-01
10011 425728397 N 2013-11-01
10012 425726253 Y 2013-11-01
10014 425726253 Y 2013-11-01
查询
PhoneNo
425729233
425728397
425726253
433699225
预期结果:
id PhoneNumber Flag Date
10009 425729233 N 2013-11-01
10011 425728397 N 2013-11-01
10014 425726253 Y 2013-11-01
尝试过的查询
Select id, PhoneNumber, Flag, Date from Master,Query where Master.PhoneNumber = Query.PhoneNo group by phoneNumber having max(id)
Select id,PhoneNumber, Flag, Date from Master, Query where Master.PhoneNumber = Query.PhoneNo and id in (select max(id) from Master)
任何有关如何处理查询表中跳过的值433699225 的帮助都会有所帮助。基本上,查询表是从 csv 导入的,它与主表进行比较,包括匹配和不匹配的最终输出需要导出到 csv 中。
【问题讨论】:
-
选择
MAX(id) -
@zerkms 你的答案只有在最大的 id 总是对应于最近的日期时才有效。
-
@portforwardpodcast 你说得有道理。但是,这恰好是 OP 在尝试查询部分中所做的。所以似乎是一个公平的解决方案
-
@portforwardpodcast:如果 OP 使用了
MAX(id)- 这意味着它是交易。所以我的评论基于当前的查询。 PS:哎呀,Mosty Mostacho 已经提到过同样的事情 -
MySQL 标签下最常见问题的副本
标签: php mysql csv greatest-n-per-group