是否可以在下面的SQL查询中添加WHERE条件?
目前,我正在从所有行中选择一个随机行,table
并且需要对其进行更改,以便仅从table
where列中的行中获取随机行:type="1"
这是SQL查询:
SELECT *
FROM table AS r1 JOIN
(SELECT (RAND() *
(SELECT MAX(id)
FROM table)) AS id)
AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句