免责声明:我已经搜索了类似的问题,但没有找到明确的答案。
我有一张这样的桌子:
id | catid | views | text
1 100 2000 "sometext"
2 200 2000 "sometext"
3 200 3000 "longertext"
对于每个catid(在这种情况下仅为2:100和200),我需要获取具有最多视图和更长文本的记录...在这种情况下,结果将是:
id | catid | views | text
1 100 2000 "sometext"
3 200 3000 "longertext"
以观看次数优先。 我已经尝试了一些使用内部联接的查询,但是似乎都不清楚并且无法正常工作...
有什么想法吗?
答案 0 :(得分:1)
一种方法使用具有order by
和limit
的相关子查询进行过滤。假设id
是主键或唯一键:
select t.*
from mytable t
where t.id = (
select id
from mytable t1
where t1.catid = t.catid
order by t1.views desc, char_length(t1.text) desc
limit 1
)