我想知道是否可以获取查询的计数,并检查查询中的实体是否同时存在。
所以我想做这样的事情
SELECT
COUNT(a.*)
CASE WHEN ? IN (a.column) THEN 1 ELSE 0 END AS exist
FROM a
WHERE ...
我知道我可以在这种情况下进行子查询,但是只能使用初始查询中的数据进行操作?
编辑
IE
+------------+
| 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
如果要检查列中是否存在一个值,则可以做:
SELECT COUNT(*),
MAX(? = a.column) as value_exists
FROM a
WHERE ...
在数字上下文中,mySQL将布尔值视为整数,以true为1,为false为0。因此,如果该值在列中的任何行中,则返回true。如果要检查是否在 all 中,则可以使用MIN()
。