我有一个表ITEMS,它有props id,site_id,frequency
到目前为止,我可以使用从id数组中列出项目并按频率排序
SELECT *
FROM items
WHERE id IN(1549, 1550, 1635, 1637)
ORDER BY site_id, frequency DESC
但我想按site_id将我的结果分组,只包含一个频率最好(最高)的项目。。
我该怎么办?
编辑:我想让频率最好的项目按site_id分组(一个结果按site_id)
在没有看到数据类型或样本数据的情况下,听起来你想要的是:
select id, site_id, max(frequency)
FROM items
WHERE id IN(1549, 1550, 1635, 1637)
GROUP BY id, site_id
ORDER BY site_id, frequency DESC
或者您可以使用子查询:
select i1.id, i1.site_id, i1.frequency
from items i1
inner join
(
select site_id, max(frequency) mx
from items
WHERE id IN(1549, 1550, 1635, 1637)
group by site_id
) i2
on i1.site_id = i2.site_id
and i1.frequency = i2.mx
WHERE i1.id IN(1549, 1550, 1635, 1637)
select i.*
from (
select site_id, max(frequency) as MaxFrequency
from item
where id in (1549, 1550, 1635, 1637)
group by site_id
) im
inner join items i on im.site_id = i.site_id and im.MaxFrequency = i.frequency
where i.id in (1549, 1550, 1635, 1637)
注意:如果两者具有相同的频率,则每个site_id
会有多行。