这是我使用的代码
SELECT * FROM
(SELECT * FROM [table name]
ORDER BY dbms_random.value)
WHERE rownum < 10
我只想从列A=XYZ的记录中随机选择行。我试图在代码中添加WHERE子句:
SELECT * FROM
(SELECT * FROM [table name]
WHERE [column A] = 'XYZ'
ORDER BY dbms_random.value)
WHERE rownum < 10
但是出现了一个错误。如有任何反馈,我们将不胜感激。
您可以在SQL Server中尝试以下方法:
SELECT TOP 10 * FROM [table name]
WHERE [column A] = 'XYZ'
ORDER BY newid()
有关ORDER BY newid((如何在SO post 中工作的更多信息
您的代码看起来像Oracle代码。它不识别标识符的方括号。事实上,不要转义它们——如果必须的话,也不要使用双引号:
SELECT t.*
FROM (SELECT t.*
FROM t
WHERE columnA = 'XYZ'
ORDER BY dbms_random.value
) t
WHERE rownum < 10;
在SQL Server中,等价物是:
SELECT TOP (10) t.*
FROM t
WHERE columnA = 'XYZ'
ORDER BY NEWID()