PostgreSQL | Как получить одну случайную запись из таблицы? — efim360.ru

PostgreSQL | Как получить одну случайную запись из таблицы?

Команда для получения одной случайной записи из таблицы:

SELECT * FROM a.t_d ORDER BY RANDOM() LIMIT 1;

Ключевое выражение здесь RANDOM(). Оно генерирует случайное число в диапазоне 0.0 <= x < 1.0. Это значит, что НОЛЬ может быть, а ОДИН никогда не будет. В JavaScript это точно также, например.

Случайная запись из таблицы в PostgreSQL через SELECT RANDOM() - вызов 1
Случайная запись из таблицы в PostgreSQL через SELECT RANDOM() - вызов 1
Случайная запись из таблицы в PostgreSQL через SELECT RANDOM() - вызов 2
Случайная запись из таблицы в PostgreSQL через SELECT RANDOM() - вызов 2
Случайная запись из таблицы в PostgreSQL через SELECT RANDOM() - вызов 3
Случайная запись из таблицы в PostgreSQL через SELECT RANDOM() - вызов 3

 

В нашем случае a.t_d - это:

  • Имя схемы - a
  • Имя таблицы - t_d

Выражение LIMIT 1 ограничивает выдачу записей таблицы, одной штукой. Если написать 10, то будет 10 записей.

 

Если отдельно вызывать,

SELECT RANDOM();

то можно получать такие результаты

Случайное число в PostgreSQL через SELECT RANDOM() - вызов 1
Случайное число в PostgreSQL через SELECT RANDOM() - вызов 1
Случайное число в PostgreSQL через SELECT RANDOM() - вызов 2
Случайное число в PostgreSQL через SELECT RANDOM() - вызов 2
Случайное число в PostgreSQL через SELECT RANDOM() - вызов 3
Случайное число в PostgreSQL через SELECT RANDOM() - вызов 3

 

Информационные ссылки

Официальный сайт WEB-оболочки pgAdmin - https://www.pgadmin.org

Официальный сайт СУБД PostgreSQL - https://www.postgresql.org

Раздел "Таблица 9.6. Случайные функции" - https://postgrespro.ru/docs/postgresql/14/functions-math#FUNCTIONS-MATH-RANDOM-TABLE

Команды SQL - https://postgrespro.ru/docs/postgresql/14/sql-commands

Команда SELECT - https://postgrespro.ru/docs/postgresql/14/sql-select

Предложение ORDER BY - https://postgrespro.ru/docs/postgresql/14/sql-select#SQL-ORDERBY

Предложение LIMIT - https://postgrespro.ru/docs/postgresql/14/sql-select#SQL-LIMIT