mysql - 如何使用条件内子查询结果的字段?

标签 mysql sql subquery conditional-statements

这是我尝试执行的查询,它应该返回一个表,其中包含未满的池的数据(members_nr

SELECT id, name,
(
    SELECT COUNT(*) FROM pools_entries WHERE pool_id=p.id AND pending=0
) AS members_nr,
members_max, open
FROM pools p
WHERE id IN(1,2,3,4) AND members_nr < members_max;

问题是 MySQL 不会将members_nr 识别为字段,因为它是子查询的结果。这个小问题有逻辑解决方案吗?

任何帮助将不胜感激:)

最佳答案

注意是正确的,您需要having子句。但为了 Google 用户的利益,我将分享一些知识。

WHERE 子句用于将结果集限制为特定记录,它也用于优化。 Mysql 使用 WHERE 子句来标识它可以使用哪个索引来加速查询。

HAVING 子句在查询末尾执行。它用于过滤记录集。假设您有一个数据库中与您的 WHERE 子句匹配的内容列表。然后,您可以使用 HAVING 根据某些设定条件进一步过滤该列表。

我的基本经验法则是:如果您需要根据列的值进行选择,请使用 WHERE,如果您需要根据表中非列的值进行选择,请使用 HAVING。

关于mysql - 如何使用条件内子查询结果的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184182/

相关文章:

Mysql性能

sql - 谷歌大查询 : Forward Filling: IGNORE in Window Function

mysql - 如何为子查询添加值?

php - PHP 和 MySQL 中的每用户标签云

c# - AWS Lambda、.Net Core 和 MySql : Could not load file or assembly 'System. Diagnostics.TraceSource,版本 = 4.0.0.0

sql - 稍后在查询中使用 'AS ColumnName' 的值

mysql - 这个 MySQL 查询有什么问题,它有一个带有 JOIN 的子查询,应该链接来自 3 个表的数据?

MySQL 将多个子查询优化为嵌套内部连接?

php - 帮助加入

mysql - SQL 查询 - 分组依据不起作用