我使用此查询从 MySQL 数据库中选择一组记录:
SELECT *
FROM table
WHERE id IN(10,14,12,11,8,7,4)
AND actief='on'
ORDER BY FIELD(id,10,14,12,11,8,7,4)
这将为我提供给定的 ID。在这种情况下我最多会得到 7 条记录。但如果 ID“14”具有 active=“off”,则该值可能会更少。
但是我需要的是一组 20 条记录,其中 het 列表 IN(10,14,12,11,8,7,4)
必须 位于如果它们也满足条件 active='on'
,则结果。如果返回 6 条记录,那么我希望查询选择另外 14 条记录。首先选择最高的 ID,必须满足 active='on'
并且可能尚未出现在结果中。
这可以通过一条SQL语句来实现吗?或者我应该首先将提及查询的结果放入一个数组中,然后在第二个数组中选择剩余的记录。最后将它们也放入数组中?
最佳答案
您想要对结果进行排序而不是过滤。我认为这是您想要的查询:
SELECT *
FROM table
ORDER BY (id IN(10,14,12,11,8,7,4) AND actief = 'on') desc,
FIELD(id,10,14,12,11,8,7,4),
id desc
LIMIT 20;
编辑:
最终的解决方案只需要actief = 'on'
,所以:
SELECT *
FROM table
WHERE actief = 'on'
ORDER BY (id IN (10,14,12,11,8,7,4)) desc,
FIELD(id,10,14,12,11,8,7,4),
id desc
LIMIT 20;
关于mysql:SELECT WHERE id IN() 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20746971/