我有一个像这样的 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
我想选择重复的 update
中最大的 id
,如果没有重复的,那么只选择唯一一个不是重复的.
问题是,我已经设置好了,所以原始行有 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
)
没有我想象的那么好。
最佳答案
试试这个查询我的 friend :
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
关于mysql - 选择最大的重复行和唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22280477/