[英]Is there a way to limit rows in the right table of a left join to only be used once?
[英]Implementing LIMIT against rows of single table while using LEFT JOIN
給定一個相當陳規定型的場景,其中一個項目表被一個包含同一項目的多個圖像的圖像表引用,我試圖弄清楚如何在收集所有圖像行的同時檢索特定數量的項目。
設置很簡單,看起來像:
CREATE TABLE items (
id INTEGER PRIMARY KEY,
...
...
)
CREATE TABLE images (
item_id INTEGER PRIMARY KEY,
url STRING,
...
...
)
LIMIT 20
了整個結果集中的最大行數,並順便截斷了項目記錄的中途。
我目前正在做兩個查詢,但除了在架構上一點也不理想之外,實際上證明協調起來很尷尬(這很有意義,因為我肯定做錯了)。 我沒有找到任何關於如何協調LIMIT
與LEFT JOIN
的信息,所以我想我會問。 謝謝!
注意。 與此類似的問題確實存在,但正在詢問如何做諸如檢索每個項目的前(例如)5 張圖像之類的事情。 我希望檢索(例如)10 個項目並獲取每個項目的所有圖像。
像這樣的查詢:
SELECT * FROM items ORDER BY ? LIMIT 10
將從items
返回 10 行(最多)。
如果您有一些特定的排序條件,則需要為ORDER BY
子句提供列。
如果不是,則刪除ORDER BY
子句,但在這種情況下,沒有什么可以保證您將獲得的結果集。
所以你所要做的就是將上面的查詢LEFT
加入到images
:
SELECT it.*, im.*
FROM (SELECT * FROM items ORDER BY ? LIMIT 10) it
LEFT JOIN images im
ON im.item_id = it.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.