我想知道是否可以获取查询的计数,并检查查询中的实体是否同时存在。
所以我想做这样的事情
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
的条目答案 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 ...
。