Ответ на ваш вопрос есть во второй ссылке:
SELECT * FROM table ORDER BY RAND() LIMIT 1
Просто измените лимит и / или переписайте для SQL Server:
SELECT TOP 1 * FROM table ORDER BY newid()
Теперь, это строго отвечает на ваш вопрос, но вы действительно не должны использовать это решение. Просто попробуйте на большом столе, и вы поймете, что я имею в виду.
Если ваше пространство клавиш является последовательным, либо без отверстий, либо с очень небольшим количеством отверстий, и если в нем очень мало отверстий, вы не слишком обеспокоены тем, что некоторые строки имеют немного более высокий шанс выбора, чем другие, тогда Вы можете использовать вариант, в котором вы вычисляете, какой ключ вы хотите получить случайным образом, в диапазоне от 1 до самого высокого ключа в вашей таблице, а затем извлекаете первую строку с ключом, равным или превышающим число, которое вы рассчитали. Часть «выше чем» нужна вам только в том случае, если в пространстве клавиш есть отверстия.
Этот SQL оставлен в качестве упражнения для читателя.
Редактировать : Обратите внимание, что в комментарии к другому ответу здесь упоминается, что, возможно, чистый SQL означает стандарт SQL ANSI. Если это так, то нет никакого способа, поскольку нет стандартизированной случайной функции, и при этом каждый механизм базы данных не обрабатывает функцию случайных чисел одинаково. По крайней мере один механизм, который я видел, «оптимизирует» вызов, вызывая его один раз и просто повторяя вычисленное значение для всех строк.