选择最大的重复和唯一行

时间:2014-03-09 09:21:22

标签: mysql sql

我有一个像这样的MySQL表:

id  | header            | cat   | newsfeed  | user      | hide  | update
1   | header12345678    | Manga | news1     | william   | 0     | 0
3   | header12345679    | Manga | news2     | william   | 0     | 1
4   | header12345610    | Manga | news3     | william   | 0     | 1
5   | 12345             | Manga | news4     | william   | 0     | 0
6   | 12346             | Manga | news5     | william   | 0     | 0
7   | 12347             | Manga | news6     | william   | 0     | 6

我想选择重复id中最大的update,如果没有重复,那么只选择一个不重复的。{/ p>

问题是,我已经设置了,所以原始行有update=0,当update不为0时,它等于原始行的id。

所以我希望SQL语句的结果是:

id  | header            | cat   | newsfeed  | user      | hide  | update
4   | header12345610    | Manga | news3     | william   | 0     | 1
5   | 12345             | Manga | news4     | william   | 0     | 0
7   | 12347             | Manga | news6     | william   | 0     | 6

由于id=4的重复ID最高,id=5没有重复,而id=7的重复ID最高。

我试过这个:

SELECT *
FROM newsfeed sr1
WHERE NOT EXISTS (
    SELECT *
    FROM  newsfeed sr2
    WHERE sr1.update = sr2.update AND
          sr1.id < sr2.id AND
          sr2.id > 0
)

不能像我想的那样工作。

1 个答案:

答案 0 :(得分:3)

尝试此查询我的朋友:

select * from newsfeed where id in
(select max(id) from
(select id,
case when update = 0 then id else update end update1
from newsfeed)t1
group by update1);

SQL Fiddle