有没有一种简单的方法可以从具有特定条件的数据表中随机选择记录(大约20条)



这是我使用的代码

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()

最新更新