2016-08-12 223 views
0

我有一個表名「表格名」大致是這樣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)'?後者似乎更有意義,但如果你要解釋你想做什麼,也許它會有所不同。 –

回答

2

只是一個子查詢添加到選擇列表:

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

窗口功能

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所需的結果,雖然沒有看到業務邏輯需求,但我不確定爲什麼說結果會有用... –

1

您可以選擇這個最大的ID給一個變量,然後只需在您選擇使用它:

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

對於MySQL

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

這是不正確的。這給你一個ID = n + 1的結果行和從表中任意選擇的標題。 –

+0

@ H.Pauwelynツ這是怎麼評論?它不批評或要求澄清;它(試圖)回答這個問題。 – hichris123