mysql:SELECT WHERE id IN()等

时间:2013-12-23 16:00:08

标签: mysql sql

我正在使用此查询从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语句来实现。或者我应该首先将提及结果查询的结果放在一个数组中,然后在第二个数组中选择剩余的记录。最后把那些也放在阵列中?

1 个答案:

答案 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;