1

我想使用这样的查询;但我知道这不是真正的用法。

我总共需要 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

你能帮我编辑这个吗?

非常感谢。

4

2 回答 2

3

您不能在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。)

于 2014-03-21T11:23:09.957 回答
1

试试看

   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
于 2014-03-21T11:22:38.247 回答