如何在条件中使用由子查询结果的字段?

Joh*_*ell 2 mysql sql subquery conditional-statements

这是我正在尝试执行的查询,它应该返回一个包含未满的池数据的表(members_nr <members_max).

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;
Run Code Online (Sandbox Code Playgroud)

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

任何帮助都感激不尽 :)

Lee*_*Lee 5

NB是正确的,你需要有条款.但是为了谷歌的缘故,我会分享一些知识.

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

HAVING子句在查询结束时执行.它用于过滤记录集.因此,假设您有一个与WHERE子句匹配的数据库中的东西列表.然后,您可以使用HAVING在某些设定条件下进一步过滤该列表.

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