sql - MS SQL 如何从表中选择 n 行,即使表有 n - x 行

标签 sql sql-server

我有一个包含以下数据的表格:

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/

相关文章:

java - 如何从Android使用谷歌应用程序引擎查询实体?

sql - 如何选择SQL数据库表中带有分隔值的字段中的第n个项目?

sql-server - 在 accpac 中写入 sql 数据库

sql - 了解 SQL 定义语法

sql - 在 SQL 中如何选择使用一系列字符串?

sql-server - 在 SSRS Visual Studio 中看不到 RDLC 代码选项卡

mysql - 按三个以上元素分组以显示所有可能的组合

sql - Rails:SQLite3::CantOpenException:无法打开数据库文件

sql-server - 从临时表插入 - 创建太多行

php - SQL在一行中查询一个值并在另一行中更改它的值