2016-02-25 71 views
1

我希望得到N個新聞與偏移Ø與所有標籤MySQL查詢爲多對多與限制

news 
id | title 

tag 
id | name 

news_tag 
news_id | tag_id 

我怎樣才能做到在一個單一的查詢?

現在我首先得到N個消息。

SELECT * FROM news LIMIT N, O 

而且後得到的所有標籤爲每個新聞:

SELECT n.id, nt.tag_id, t.name FROM news AS n 
JOIN news_tag AS nt ON n.id = nt.news_id 
JOIN tag AS t ON nt.tag_id = c.id 
WHERE n.id = curNewsId 

它是N + 1個查詢。我怎樣才能做得更好?

回答

0

試着這麼做:

SELECT n.id, nt.tag_id, t.name 
FROM (SELECT id 
     FROM news 
     LIMIT N, O) AS n 
JOIN news_tag AS nt ON n.id = nt.news_id 
JOIN tag AS t ON nt.tag_id = c.id 

應當指出的是,應用LIMIT沒有ORDER BY條款將從news表中選擇一個任意的記錄集。

+0

非常感謝。沒有15的聲望給你評分。 –