我在使用SQL聚合技术时遇到了麻烦。考虑下表:
Image
-----
id (auto generated image id)
property_id (foreign key)
image_url (text)
image_priority (int)
我想要一个优先级最低的图像URL列表(每个属性一个图像)。换句话说,每个媒体资源拥有的最受欢迎图片(最受欢迎,因为它的优先级最低)。
property_id | id | url
----------------------
1 | 17 | awesome.png
2 | 23 | best.png
这是我失败的尝试:
SELECT id, property_id, url
FROM image
group by property_id
having priority = min(priority)
用途distinct on
:
select distinct on (property_id) id, property_id, image_url
from image
order by property_id, image_priority;
对于文档:
SELECT DISTINCT ON(expression [,...])仅保留给定表达式等于的每组行的第一行。(...)请注意,除非使用ORDER BY来确保所需的行首先出现,否则每个集合的“第一行”都是不可预测的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句