SQL“选择最大”查询

问题描述:

我有一个表名“表格名”大致是这样SQL“选择最大”查询

+----+-----------+ 
| ID | title  | 
| 1 | title 1 | 
| 2 | title 2 | 
| ...| ......... | 
| ...| ......... | 
| n | title n | 
+----+-----------+. 

我需要返回该结果

+------+-----------+ 
| n+1 | title 1 | 
| n+1 | title 2 | 
| ... | ......... | 
| ... | ......... | 
| n+1 | title n | 
+------+-----------+ 

查询(N + 1是选择max(ID)from table_name)

我该怎么做?

+0

标记您的RDBMS。并且在你想要的输出中用'n + 1',你是否意思是每一行应该有相同的更高的ID,或者它应该有_old_ ID加上'max(旧ID)'?后者似乎更有意义,但如果你要解释你想做什么,也许它会有所不同。 –

只是一个子查询添加到选择列表:

select (select max(ID) + 1 from tablename), title 
from tablename 

窗口功能

SELECT MAX(ID) OVER() + 1, title 
FROM table_name 
+0

对于哪个RDBMS可以工作,还是ANSI? –

+2

它是ANSI SQL扩展T611“基本OLAP操作”。 (但是,所有dbms产品都不支持。坚持核心ANSI SQL以获得更好的兼容性。) – jarlh

+0

@jarlh谢谢!它在MS SQL Server 2008 R2上运行,fwiw - 提供OP所需的结果,虽然没有看到业务逻辑需求,但我不确定为什么说结果会有用... –

您可以选择这个最大的ID给一个变量,然后只需在您选择使用它:

DECLARE @maxId INT = (SELECT MAX(ID) FROM [dbo].[table1]); 
SELECT @maxId, t.title, t.column2, t.column3 ... from [dbo].[table2] t 

对于MySQL

select (1+max(ID)) as ID ,title 
from table_name; 
+1

这是不正确的。这给你一个ID = n + 1的结果行和从表中任意选择的标题。 –

+0

@ H.Pauwelynツ这是怎么评论?它不批评或要求澄清;它(试图)回答这个问题。 – hichris123