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)
我该怎么做?
只是一个子查询添加到选择列表:
select (select max(ID) + 1 from tablename), title
from tablename
窗口功能
SELECT MAX(ID) OVER() + 1, title
FROM table_name
对于哪个RDBMS可以工作,还是ANSI? –
它是ANSI SQL扩展T611“基本OLAP操作”。 (但是,所有dbms产品都不支持。坚持核心ANSI SQL以获得更好的兼容性。) – jarlh
@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;
这是不正确的。这给你一个ID = n + 1的结果行和从表中任意选择的标题。 –
@ H.Pauwelynツ这是怎么评论?它不批评或要求澄清;它(试图)回答这个问题。 – hichris123
标记您的RDBMS。并且在你想要的输出中用'n + 1',你是否意思是每一行应该有相同的更高的ID,或者它应该有_old_ ID加上'max(旧ID)'?后者似乎更有意义,但如果你要解释你想做什么,也许它会有所不同。 –