2014-02-17 265 views
3

我試圖從一個表與另一個表及其相關的數據一起獲得一定數量的記錄:LEFT OUTER JOIN與LIMIT

​​

它的工作原理,但問題是該限制似乎限制結果的數量而不是我在A中找到的記錄的數量:(

有什麼辦法讓LIMIT只考慮來自A的記錄?因爲來自A的記錄可能在B中有很多相關記錄,我不想限制

+0

我想澄清一下這句話:「'A的記錄可能在B中有很多相關記錄,我不想限制這個'」。這意味着你需要從表A中總共獲得40條記錄。這真的是你想要的嗎?或者你想要A中的每個關鍵點有多達40條記錄? –

+0

是的,這就是我想要的。 B可以有任何數量的鏈接到A的記錄的記錄,或者沒有記錄。基本上B就像A的元數據一樣。所以我想從A中查詢40條記錄,如果可能的話也使用相同的查詢獲取元數據 – thelolcat

回答

5

嘗試將限制放在子查詢中,j在那上面。

SELECT 
    * 
FROM 
(
    SELECT * FROM tblA WHERE ... ORDER BY ... LIMIT 0,40 
) 
    AS a 
LEFT JOIN 
    tblB AS b 
    ON a.id = b.target 

許多RDBMS將支持這一點,我不知道SQLite。

+0

不能在子查詢中使用ORDER BY,但在正確的軌道上不能使用ORDER BY。 –

+0

所以沒有辦法用ORDER來做? 「LEFT JOIN」有什麼用?不會忽略A中沒有B中相關記錄的任何記錄嗎? – thelolcat

+1

@JoelCoehoorn-SQL小提琴不同意:http://sqlfiddle.com/#!7/d0a2d/45 – MatBailie