是否可以在下面的SQL查询中添加WHERE条件?
目前我从所有行中选择一个随机行到table
,我需要更改它,以便我只能从table
中的行获取随机行,其中列:{{ 1}}
这是SQL查询:
type="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;