La respuesta a su pregunta es en el segundo link allí:
SELECT * FROM table ORDER BY RAND() LIMIT 1
Sólo cambia el límite, y/o reescribir para SQL Server:
SELECT TOP 1 * FROM table ORDER BY newid()
Ahora bien, esta estrictamente responde a su pregunta, pero realmente no debería usar esta solución. Pruébalo en una mesa grande y verás a qué me refiero.
Si su espacio de teclas es secuencial, ya sea sin agujeros o con muy pocos agujeros, y si tiene muy pocos agujeros, no le preocupa que algunas filas tengan una posibilidad ligeramente mayor de ser recogidas que otras, luego puede usar una variación donde calcule qué tecla desea recuperar aleatoriamente, desde 1 hasta la clave más alta en su tabla, y luego recupere la primera fila que tenga una clave igual o superior al número que calculó. Solo necesita la parte "superior a" si su espacio clave tiene agujeros.
Este SQL se deja como un ejercicio para el lector.
Editar: nota, un comentario a otra respuesta aquí menciona que quizá SQL puro decir ANSI SQL estándar. Si ese es el caso, entonces no hay forma, ya que no hay una función aleatoria estandarizada, ni cada motor de base de datos trata la función de números aleatorios de la misma manera. Al menos un motor que he visto "optimiza" la llamada llamándola una vez y simplemente repitiendo el valor calculado para todas las filas.
No me queda claro cómo implementar lo que propone si la suposición n. ° 3 es falsa (es decir, su tabla tiene agujeros). – Gili
Tiene que volver a escribir la tabla completa para que la suposición n. ° 3 sea verdadera, por lo que es una operación O (n) muy lenta. Cree una nueva tabla con las mismas columnas que la tabla original, y también una columna de identidad para una nueva clave principal que no tendrá espacios vacíos. Luego inserte la tabla original completa en la nueva. – user12861