我有一个表ITEMS,它有道具id,site_id,频率
到目前为止,我可以列出这些项目,并使用
从id数组中按频率对它们进行排序SELECT *
FROM items
WHERE id IN(1549, 1550, 1635, 1637)
ORDER BY site_id, frequency DESC
但是我想通过site_id将我的结果分组,只有一个项目具有最佳(最高)频率..
我该怎么办?
编辑:我希望将具有最佳频率的项目按site_id分组(一个结果由site_id)
答案 0 :(得分:3)
如果没有看到数据类型或示例数据,您会想要这样:
<击> 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)
答案 1 :(得分:2)
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
会为您提供一行。