MySQL 查询有限制的多对多
MySQL query for many to many with limit
我想获取所有标签偏移量为 O 的 N 个新闻
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查询。我怎样才能做得更好?
试试这样的东西:
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
子句的情况下应用将 select 来自 news
的 任意 记录集] table.
我想获取所有标签偏移量为 O 的 N 个新闻
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查询。我怎样才能做得更好?
试试这样的东西:
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
子句的情况下应用将 select 来自 news
的 任意 记录集] table.