我想使用这样的查询;但我知道这不是真正的用法。
我总共需要 15 个类别 ID(4、5、6、9、10 和随机 10 个 ID,而不是指定的)
试过这个
SELECT *
FROM categories
WHERE id IN (CONCAT('4,5,6,9,10', SELECT id from categories WHERE id NOT IN(4,5,6,9,10) ORDER BY RAND()))
LIMIT 0,10
你能帮我编辑这个吗?
非常感谢。
我想使用这样的查询;但我知道这不是真正的用法。
我总共需要 15 个类别 ID(4、5、6、9、10 和随机 10 个 ID,而不是指定的)
试过这个
SELECT *
FROM categories
WHERE id IN (CONCAT('4,5,6,9,10', SELECT id from categories WHERE id NOT IN(4,5,6,9,10) ORDER BY RAND()))
LIMIT 0,10
你能帮我编辑这个吗?
非常感谢。
您不能在in
子句中混合使用常量和子查询。以下修复了语法错误,但实际上并没有解决问题:
SELECT *
FROM categories
WHERE id IN (4,5,6,9,10) or
id IN (SELECT id from categories WHERE id NOT IN (4,5,6,9,10) ORDER BY RAND()
)
LIMIT 0,15;
你可以用这种方式做你想做的事:
select *
from categories
order by (id in (4, 5, 6, 9, 10)) desc,
rand()
limit 15;
这将返回 10 行,其中 5 行是您想要的 id,其余的是随机选择的。(这假设它id
在表中是唯一的categories
。)
试试看
SELECT *
FROM categories
WHERE id IN (4,5,6,9,10)
or id in(
SELECT id from categories WHERE id NOT IN(4,5,6,9,10) ORDER BY RAND()
)
LIMIT 0,10