求一条消重的sql

古月先生 2011-08-15 11:17:46
表如下
id type
1 0
2 1
3 0
4 4
5 0
6 4

我想要列出所有type=0的项目,如果type>0那么列出消重后的,出来的结果如下

id type
1 0
2 1
3 0
4 4
5 0
删掉了id=6,type=4,,因为type=4的有id=4.消去重复的

求哪位大哥可以写一条sql啊,不用union all可以嘛?
...全文
141 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
古月先生 2011-08-20
  • 打赏
  • 举报
回复
谢谢各位的回答,最后发现,要做保留多个重复项还是用程序实现比较靠谱唔。。。数据库太麻烦了,或者使用存储过程也不错
nicenight 2011-08-15
  • 打赏
  • 举报
回复
为什么要排斥 union all 呢?假设你的 id 均大于 0,写出如下这么诡异的语句,Mysql 5.1 测试通过:

select *
from 你的表
group by type, if(type = 0, id, -1)
order by id
古月先生 2011-08-15
  • 打赏
  • 举报
回复
补充一下,就是用
select * from table group by type.
不过type=0的就不要消去了。。。

这可以设置条件嘛?
zalvsa 2011-08-15
  • 打赏
  • 举报
回复
如果消重的时候想保留N个重复的项,该怎么做呢?

没看懂……
徐明勋 2011-08-15
  • 打赏
  • 举报
回复
select a.id,a.type from test20 a left join
(select max(id) id,type,count(type) cnt from test20 where type>0 group by type having cnt>1) b
on a.id=b.id where b.id is null
古月先生 2011-08-15
  • 打赏
  • 举报
回复
恩。。在请问一下,如果消重的时候想保留N个重复的项,该怎么做呢?

56,677

社区成员

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

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