Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单SQL问题(MySQL)_Sql_Mysql - Fatal编程技术网

简单SQL问题(MySQL)

简单SQL问题(MySQL),sql,mysql,Sql,Mysql,我有一个疑问: SELECT page.id, revision.title, revision.number FROM page INNER JOIN revision ON page.id = revision.pageId 这将返回类似于: "1" "Page Version A" "1" "1" "Page Version B" "2" "1" "Page Version C" "3" 现在,我只想为每一页返回一行,其中包含来自编号最高的最新修订版的数

我有一个疑问:

SELECT page.id, revision.title, revision.number
FROM page
    INNER JOIN revision ON page.id = revision.pageId
这将返回类似于:

"1"   "Page Version A"   "1"
"1"   "Page Version B"   "2"
"1"   "Page Version C"   "3"
现在,我只想为每一页返回一行,其中包含来自编号最高的最新修订版的数据。如果我这样做:

SELECT page.id, revision.title, revision.number
FROM page
    INNER JOIN revision ON page.id = revision.pageId
GROUP BY page.id
我得到:

"1"   "Page Version A"   "1"
但我想:

"1"   "Page Version C"   "3"
有什么想法吗?
谢谢。

添加一个WHERE子句,类似于


其中revision.number=从revision r中选择maxnumber,其中r.pageId=page.id

如果只想选择一条记录,可以使用类似于MSSQL“TOP”的MySQL“LIMIT”关键字

例如:


<>这将命令你的所有结果,然后选择最上面的结果。

如果这是一个你将运行很多次的查询,我会考虑创建一个视图,它选择每个页面的最新版本:

SELECT page.id, MAX(revision.number)
FROM page
INNER JOIN revision ON page.id = revision.pageId
GROUP BY page.id
create view LatestRevision
as 
Select pageid, max(number) from revision
那么,问题就来了

SELECT page.id, revision.title, revision.number
FROM page
    INNER JOIN revision ON page.id = revision.pageId
    INNER JOIN LatestRevision on revision.pageid = LatestRevision.pageid and revision.Number = LatestRevision.number

这将只选择最大版本号,而不是整个最新版本。此解决方案比Rahul的解决方案快!
SELECT page.id, revision.title, revision.number
FROM page
    INNER JOIN revision ON page.id = revision.pageId
    INNER JOIN LatestRevision on revision.pageid = LatestRevision.pageid and revision.Number = LatestRevision.number