我有一个包含以下数据的表格:
ID | Name
---------
1 | John
2 | Alice
当我想选择 5 行时,我想获取下一个数据:
ID | Name
---------
1 | John
2 | Alice
1 | John
2 | Alice
1 | John
有什么想法可以做到这一点吗?
最佳答案
-- to create a sample table.
CREATE TABLE table1 (ID BIGINT, NAME VARCHAR(255))
INSERT INTO table1 VALUES (1, 'John'), (2, 'Alice')
-- set number of rows you need
DECLARE @RowsReqd INT = 5
-- find out the max ID we want to generate
DECLARE @Limit INT
SELECT @Limit = MAX(ID) FROM table1
-- generate the list
;WITH NumbersList
AS (
SELECT 1 AS Number, 1 AS ID
UNION ALL
SELECT Number + 1, Number % @Limit + 1 FROM NumbersList
WHERE Number < @RowsReqd
)
SELECT T.*
FROM NumbersList NL
INNER JOIN table1 T ON T.ID = NL.ID
ORDER BY NL.Number
OPTION (MAXRECURSION 10000) -- increase this value to generate more numbers
输出:
ID NAME 1 John 2 Alice 1 John 2 Alice 1 John
关于sql - MS SQL 如何从表中选择 n 行,即使表有 n - x 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911624/