在SQL随机化查询中添加where条件

时间:2014-12-10 17:06:28

标签: mysql sql max where

是否可以在下面的SQL查询中添加WHERE条件?

目前我从所有行中选择一个随机行到table,我需要更改它,以便我只能从table中的行获取随机行,其中列:{{ 1}}

这是SQL查询:

type="1"

1 个答案:

答案 0 :(得分:1)

是的,您可以添加条件。但是要小心,因为你可能没有得到任何匹配:

SELECT *
FROM table r1 JOIN
     (SELECT (RAND() * (SELECT MAX(id) FROM table)) AS id
     ) r2
WHERE r1.type = 1 and r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1;

这可能也会对性能产生重大影响。为了提高性能,您需要table(type, id)上的索引。此外,您也可以在子查询中包含where

SELECT *
FROM table r1 JOIN
     (SELECT (RAND() * (SELECT MAX(id) FROM table WHERE type = 1)) AS id
     ) r2
WHERE r1.type = 1 and r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1;