![](/img/trans.png)
[英]Selecting the top matching record of a one to many relationship on a SQL join statement
[英]SQL - selecting first matching record for join
使用MySQL,我從成員->項目->照片中獲得了一組具有1-> N關系的表。
我正在嘗試從第一張關聯的照片中選擇一個成員商品的列表+一些列(首先,我的意思是排序順序最低的照片)。
目前,我有這個查詢,它的工作,但似乎過於復雜。 有沒有更簡單的方法和/或如何改進此查詢。 特別是,我擔心最里面的select語句-MySQL將優化此語句以使其僅處理相關成員的照片,並且我是否應該在其中使用其他where子句來幫助對其進行優化。
SELECT items.member_id, items.item_id, items.title, p.photo_id, p.blob_id, p.image_width, p.image_height
FROM items
LEFT JOIN
(
SELECT photos.item_id, photos.photo_id, photos.blob_id, photos.image_width, photos.image_height
FROM
(
SELECT item_id, min(sort_order) as min_sort_order
FROM photos
GROUP BY item_id
) AS x
INNER JOIN photos on photos.item_id=x.item_id and photos.sort_order=x.min_sort_order
) AS p ON items.item_id = p.item_id
WHERE items.member_id=1
ORDER BY items.title;
SELECT
items.member_id, items.item_id, items.title, photo.photo_id, photo.blob_id, photo.image_width, photo.image_height
FROM
items
JOIN photos on items.item_id = photos.item_id
JOIN (SELECT item_id, min(sort_order) as min_sort_order
FROM photos
GROUP BY item_id) min_photo on photos.item_id=min_photo.item_id and photos.sort_order=min_photo.min_sort_order
WHERE items.member_id=1
ORDER BY items.title;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.