sql“选择最大值”查询

sql“选择最大值”查询,sql,select,join,Sql,Select,Join,我有一个名为table_name的表,大致如下 +----+-----------+ | ID | title | | 1 | title 1 | | 2 | title 2 | | ...| ......... | | ...| ......... | | n | title n | +----+-----------+. 我需要一个返回这个结果的查询 +------+-----------+ | n+1 | title 1 | | n+1 | title

我有一个名为table_name的表,大致如下

+----+-----------+
| 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是从表\u名称中选择maxID


我该怎么做

只需将子查询添加到选择列表:

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

只需将子查询添加到选择列表:

select (select max(ID) + 1 from tablename), title
from tablename
窗口函数

SELECT MAX(ID) OVER() + 1, title
FROM table_name
窗口函数

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

您可以将此max ID选择为变量,然后只需在选择中使用它:

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

您可以将此max 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;
对于Mysql

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

标记您的RDBMS。在所需的输出中,n+1是指每一行都应该有相同的较高ID,还是应该有它的旧ID加上maxold ID?后者似乎更有意义,但如果你解释你想做什么,可能会有所不同。标记你的RDBMS。在所需的输出中,n+1是指每一行都应该有相同的较高ID,还是应该有它的旧ID加上maxold ID?后者似乎更有意义,但如果你解释你想做什么,可能会有所不同。这是不正确的。这将为您提供一个ID=n+1的结果行以及从表中任意选择的标题。这是不正确的。这将为您提供一个ID=n+1的结果行,以及从表中任意选择的标题。它是ANSI SQL,扩展名T611,基本OLAP操作。但是,并非所有dbms产品都支持此功能。坚持使用核心ANSI SQL以获得更好的兼容性。@jarlh谢谢!它在MSSQLServer2008R2上工作,fwiw-提供OP想要的结果,虽然没有看到业务逻辑要求,但我不确定为什么所说的结果会有用…它是ANSI SQL,扩展T611,基本OLAP操作。但是,并非所有dbms产品都支持此功能。坚持使用核心ANSI SQL以获得更好的兼容性。@jarlh谢谢!它在这里的MS SQL Server 2008 R2上工作,fwiw-提供OP想要的结果,尽管没有看到业务逻辑要求,我不确定为什么所说的结果会有用。。。