Есть ли простой способ выбрать случайные записи (около 20) из таблицы данных с заданным условием c - PullRequest
0 голосов
/ 20 марта 2020

Вот код, который я использовал

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

, но получил ошибку. Любая обратная связь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

Вы можете попробовать следующий подход в SQL Сервер:

SELECT TOP 10 * FROM [table name] 
WHERE [column A] = 'XYZ'
ORDER BY newid()

Дополнительная информация о том, как ORDER BY newid () работает в SO сообщении

0 голосов
/ 20 марта 2020

Ваш код выглядит как Oracle код. Он не распознает квадратные скобки для идентификаторов. На самом деле, не избегайте их - или используйте двойные кавычки, если вам необходимо:

SELECT t.*   
FROM (SELECT t.*
      FROM t 
      WHERE columnA = 'XYZ'
      ORDER BY dbms_random.value
     ) t
WHERE rownum < 10;

На SQL сервере, эквивалент будет:

SELECT TOP (10) t.*
FROM t 
WHERE columnA = 'XYZ'
ORDER BY NEWID()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...