首先这些是我的表:
Foo (id, Name)
Bar (foo_id, num)
我正在尝试执行以下操作:我想选择其所有 Bars 的 num 均高于 10 的 Foos。下面的查询可以正常工作并且可以做到,但我不想在选择中包含 Foo.id . 当我从选择中删除 Foo.id 时,我收到一个错误,即在 where 子句(子查询的)中找不到该列。
#1054 - Unknown column 'Foo.id' in 'where clause'
如何从选择中删除 Foo.id,但仍使用子查询的 where 子句中的列?我尝试在子查询中加入 Foo 表并在 where 中使用 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
)
先感谢您!