是否可以使用预先查询的数据运行CASE WHEN

时间:2016-11-23 15:25:31

标签: mysql sql subquery case

我想知道是否可以获取查询的计数,并检查查询中的实体是否同时存在。

所以我想做这样的事情

SELECT
    COUNT(a.*)
    CASE WHEN ? IN (a.column) THEN 1 ELSE 0 END AS exist
    FROM a
    WHERE ...

我知道我可以在CASE中进行子查询,但是是否可以只使用初始查询中的数据进行查询?

修改

+------------+
| id  column |
+------------+
| 1   5      |
| 2   6      |
| 3   7      |
| 4   8      |


SELECT
    COUNT(a.*)
    CASE WHEN 7 IN (a.column) THEN 1 ELSE 0 END AS exist
    FROM a
    WHERE id > 1

会返回

+--------------------+
| COUNT(*)     exist |
+--------------------+
| 3             1    |

因为有3个条目的ID为> 1并且在条目中有一个列= 7

的条目

1 个答案:

答案 0 :(得分:1)

如果要检查列中是否存在值,可以执行以下操作:

Subjects
  .find({
    // Conditions
  })
  .populate('students')
  .exec(function(err, subject) {
    // Some code here
  });

在数值上下文中,MySQL将布尔值视为整数,其中1表示true,0表示false。因此,如果值在列的任何行中,则返回true。如果要检查所有行中是否有相同的值,可以使用SELECT COUNT(*), MAX(? = a.column) as value_exists FROM a WHERE ...