我正在使用此查询从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条记录,如果列表中IN(10,14,12,11,8,7,4)
必须,则必须才能满足条件active='on'
。如果这返回6条记录,那么我希望查询选择另外14条记录。首先选择最高ID,必须符合active='on'
,并且可能不在结果中。
这可以通过一个SQL语句来实现。或者我应该首先将提及结果查询的结果放在一个数组中,然后在第二个数组中选择剩余的记录。最后把那些也放在阵列中?
答案 0 :(得分:1)
您想要排序而不是过滤结果。我想这是你想要的查询:
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;