2
首先,这些都是我的表:使用列在子查询,但不能在主查询的选择
Foo (id, Name)
Bar (foo_id, num)
我努力做到以下几点:我想选择FOOS它全部的酒吧有NUM更高比10.下面的查询完美的罚款,做到这一点,但我不想在选择Foo.id。当我从select中删除Foo.id时,出现一个错误,该列在where子句(子查询)中找不到。
#1054 - Unknown column 'Foo.id' in 'where clause'
如何从select中删除Foo.id,但仍使用子查询的where子句中的列?我尝试加入子查询中的Foo表,并在其中使用Name,但由于Name不是唯一的,所以这不会给我所需的结果。
SELECT
Foo.Name,
Foo.id
FROM
Foo
LEFT JOIN Bar ON Bar.foo_id = Foo.id
GROUP BY Bar.foo_id
HAVING COUNT(Bar.foo_id) = (
SELECT
COUNT(Bar.foo_id)
FROM
Bar
WHERE
num > 10
AND
Bar.foo_id = Foo.id GROUP BY Bar.foo_id
)
预先感谢您!
我已经更新了答案':)' – 2013-03-02 11:44:54
非常感谢你!这解决了它,我从来没有想过比较验证条件的酒吧总数与总连接数的总和。 – Chris 2013-03-02 11:46:16
不客气':D' – 2013-03-02 11:46:55