我有一个像这样的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
)
不能像我想的那样工作。
答案 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);