mysql:SELECT WHERE id IN() 等

标签 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 条记录,其中 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/

相关文章:

java - 没有选择数据库 GAE

php - Yii2:使用 Query 与 ActiveRecord 构建复杂查询

mysql - 尝试使用 tomcat 数据源连接到 mysql 时访问被拒绝

mysql - 对 TableA 和 TableB 的 SELECT 查询 IF TableB.col 值(0 或 1) 我为 0 和 1 创建新列

java - 如何在 hibernate 中对关联表进行排序?

sql - 如何返回按 NULL 和 NOT NULL 分组的记录?

php - INNODB,mysql - 多行的外键?

mysql - 使用 SQL 检索一组记录,然后使用 Rails 对它们进行排序

mysql - 使用 bash 从 csv 文件导入日期到 mysql

mysql - "WHERE IN"子句中的sql查询