SQL - 如何将图片表中的顶级有序结果与产品表联系起来?

时间:2010-08-16 05:10:49

标签: sql database greatest-n-per-group

我有一张产品表和一张照片表:

产品

  • id
  • 姓名
  • model

图片

  • ID
  • PID
  • URL
  • 顺序

最高顺序的每个pid的图片是封面图片。每个产品可以有超过1张图片。

我想在查询产品时加入此结果,因此会显示这些结果

id, name, model, url (cover picture/highest order for this pid)
---------------------------------------------------------------

但是我要努力让它发挥作用。到目前为止,我已经设法通过加入下面的图片来实现它,但我不能让它只加入顶级订单的图片......

SELECT p.id,
       p.name,
       p.model,
       x.url 
  FROM products p 
  JOIN pictures x ON (p.id = x.pid)

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

使用:

SELECT p.id,
       p.name,
       p.model,
       x.url 
  FROM PRODUCTS p 
  JOIN PICTURES x ON x.pid = p.id
  JOIN (SELECT t.pid,
               MAX(t.order) AS max_order
          FROM PICTURES t
      GROUP BY t.pid) y ON y.pid = x.pid
                       AND y.max_order = x.order