随机检索 id_post sql

retrieve random id_post sql

我有这个table:

+---------+------+
| id_post | post |
+---------+------+
| 24      | A    |
| 26      | B    |
| 39      | C    |
| 57      | D    |
+---------+------+

我想随机取回一个id_post

SELECT id_post
FROM  posts
WHERE rand()

我想检索单个值 24263957

我怎样才能做到这一点?

你似乎想要 ORDER BY RAND()LIMIT 1:

SELECT id_post
FROM  posts
ORDER BY rand()
LIMIT 1

您没有说明您使用的是哪个数据库。 RAND()LIMIT 1 的实际语法因数据库而异。以上内容适用于 MySQL。其他数据库中也有类似的语法,例如:

Postgres:

SELECT id_post
FROM  posts
ORDER BY random()
LIMIT 1

SQL 服务器:

SELECT TOP (1) id_post
FROM  posts
ORDER BY newid()

如果你只有四行,那么你怎么做并不重要。但是,如果您的 table 很大,您希望限制排序的数据量。

一种方法是:

select p.id_post
from posts p cross join
     (select count(*) as cnt from posts) pp
where rand() < 100.0 / pp.cnt
order by rand()
limit 1;

虽然这需要扫描 table,但不需要对整个 table.

进行排序