MySQL的选择限制分页
问题描述:
我有选择的结果从我的表:MySQL的选择限制分页
id tag
1 hey
1 wow
2 cry
87 game
87 bmw
6 lady
7 wow
但是这个结果我JOIN得到。 我的完整的SQL查询:
SELECT sites.id, sites.host, sites.url, sites.password, sites.status, sites.pr, sites.tyc, sites.alexa, sites.lastcheck, sites.comment, tags.tagname, tags.tagid FROM sites
LEFT JOIN sites_tags ON sites_tags.shellid = sites.id
LEFT JOIN tags ON sites_tags.tagid = tags.tagid
对于分页我需要查询3个实际DATAS。
如果我的查询 - LIMIT 3,我想
1 hey
1 wow
2 cry
87 game
87 bmw
但不
1 hey
1 wow
2 cry
例如我需要所有由ID限制的结果,而不是按行。
对不起,英语不好。
答
SELECT
s.id,
s.host,
s.url,
s.password,
s.status,
s.pr,
s.tyc,
s.alexa,
s.lastcheck,
s.comment,
tags.tagname,
tags.tagid
FROM (
SELECT
id,
host,
url,
password,
status,
pr,
tyc,
alexa,
lastcheck,
comment
FROM sites
LIMIT 3
) s
LEFT JOIN sites_tags ON sites_tags.shellid = s.id
LEFT JOIN tags ON sites_tags.tagid = tags.tagid
这是假设你是想为标签,涉及到精确的3个站点。这将选择3个站点的站点信息,然后还将选择任何标签(如果有)。
但是它不会正是你想要什么回报,你会得到更好的压制做一个查询,以便从sites
SELECT
id,
host,
url,
password,
status,
pr,
tyc,
alexa,
lastcheck,
comment
FROM sites
LIMIT 3
再进行第二次选择所有字段执行以下操作以获取标签这些网站。
SELECT
sites_tags.shellid AS id,
tags.tagname,
tags.tagid
FROM sites_tags
INNER JOIN tags ON sites_tags.tagid = tags.tagid
WHERE sites_tags.shellid IN (..... your ids go here ......)
答
(猜测id
指sites.id
)
替换FROM sites
有:
FROM (SELECT *
FROM sites
ORDER BY whatever
LIMIT 3
) AS sites
您提供的查询不会产生您显示的示例数据集。难以理解你想要达到的目标。 – Romain 2012-04-17 11:59:41
不知道它是否是最好的解决方案,但我用于使用多个连接查询视图。没有限制的问题,而且当我需要直接在数据库中检查某些内容时,我可以轻松地在特殊的情况下使用它 – 2012-04-17 12:01:25