簡體   English   中英

使用 LEFT JOIN 時對單個表的行實施 LIMIT

[英]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了整個結果集中的最大行數,並順便截斷了項目記錄的中途。

我目前正在做兩個查詢,但除了在架構上一點也不理想之外,實際上證明協調起來很尷尬(這很有意義,因為我肯定做錯了)。 我沒有找到任何關於如何協調LIMITLEFT 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM