我有一个包含列'Id'和'Status'的表格。 我想编写一个SQL语句来从这个表中选择前50行,其中25个状态为1行,25个行,状态2为一个SQL查询。
我希望我的结果具有备用状态的行。
请建议我如何编写此查询。
答案 0 :(得分:3)
如果你使用MSSQL,你可以这样做:
SELECT TOP 25
*
FROM
Table1
WHERE
Table1.Status=1
UNION ALL
SELECT TOP 25
*
FROM
Table1
WHERE
Table1.Status=2
如果您使用MYSQL,则必须使用LIMIT。像这样:
(
SELECT
*
FROM
Table1
WHERE
Table1.Status=1
LIMIT 25
)
UNION ALL
(
SELECT
*
FROM
Table1
WHERE
Table1.Status=2
LIMIT 25
);
答案 1 :(得分:1)
对于 SQL Server ,请使用TOP
:
SELECT TOP 25 * FROM TableName WHERE Status=1
UNION ALL
SELECT TOP 25 * FROM TableName WHERE Status=2
替代结果:
SELECT * FROM
(
SELECT TOP 25 *,ROW_NUMBER() OVER(ORDER BY Status) as RN FROM TableName WHERE Status=1
UNION ALL
SELECT TOP 25 *,ROW_NUMBER() OVER(ORDER BY Status) as RN FROM TableName WHERE Status=2
) T
ORDER BY RN