十万火急,如何写查询语句.

ShineShineRedStar 2010-08-20 11:04:17
表结构如下:
mysql> select * from dup_view;
+---------+----------+----------+-----------+
| call_id | s_msisdn | o_msisdn | o_call_id |
+---------+----------+----------+-----------+
| 1 | 123456 | 654321 | 2 |
| 2 | 654321 | 123456 | 1 |
| 3 | 98765 | 567890 | 4 |
| 4 | 567890 | 98765 | 3 |
| 5 | 123456 | 999999 | 0 |
+---------+----------+----------+-----------+
5 rows in set (0.00 sec)

如何写查询语句取出表中没有重复的记录,重复的记录是指call_id和o_call_id相互相等的两条记录。如 1和2, 3和4。期望的查询结果是1,3,5。
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2010-08-20
  • 打赏
  • 举报
回复
or
select * from tt a where not exists(select 1 from tt where a.call_id=o_call_id and a.call_id=o_call_id and a.call_id>call_id)
ziyouluoye 2010-08-20
  • 打赏
  • 举报
回复
定义出两个表来 再查就好些了
hht378821342 2010-08-20
  • 打赏
  • 举报
回复
额...眼拙。。。看错位了。。。。
ACMAIN_CHM 2010-08-20
  • 打赏
  • 举报
回复
如果都是成对记录的话,则直接如下即可。

select * from dup_view where s_msisdn<o_msisdn;
hht378821342 2010-08-20
  • 打赏
  • 举报
回复
楼主何苦这么纠结....看了你的数据总结出一个规律....
call_id < s_msisdn 字段的值成立么?
若是成立的话,就很简单了,我就不写出来了... = =
wwwwb 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhoupuyue 的回复:]
没看懂,1和2算是重复的,为什么查询结果里面还要1
[/Quote]
估计重复的记录取最小的call_id
阿_布 2010-08-20
  • 打赏
  • 举报
回复
没看懂,1和2算是重复的,为什么查询结果里面还要1
WWWWA 2010-08-20
  • 打赏
  • 举报
回复
try:
select * from tt a where not exists(select 1 from tt where a.call_id=o_call_id and a.call_id=o_call_id )
union all
select * from tt a where not exists(select 1 from tt where a.call_id=o_call_id and a.call_id=o_call_id and a.call_id>call_id)

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧