这个问题已经被问过几次,甚至也得到了回答,但这对我没有帮助,这就是为什么我再次发布它。我有这个查询:
select u.*,l.*,
(
select count(cr.id)
from cloud_recordings cr
left join cameras c
on c.owner_id=u.id
where c.id=cr.camera_id
) valid_licence
from users u
left join licences l
on l.user_id=u.id;
Run Code Online (Sandbox Code Playgroud)
它工作正常,但是当我在最后放一个 where 子句时:
select u.*,l.*,
(
select count(cr.id)
from cloud_recordings cr
left join cameras c
on c.owner_id=u.id
where c.id=cr.camera_id
) valid_licence
from users u
left join licences l
on l.user_id=u.id
where valid_licence > 0;
Run Code Online (Sandbox Code Playgroud)
它只是给了我一个错误:
错误:“valid_licence”列不存在第
4 行:在 l.user_id=u.id 上留下加入许可 l,其中 valid_licence >..
您不能在定义别名的同一“级别”上引用别名。您需要将基本查询包装到派生表中:
select *
from (
select u.*,
l.*,
(select count(cr.id) from cloud_recordings cr left join cameras c on c.owner_id=u.id where c.id=cr.camera_id) valid_licence
from users u
left join licences l on l.user_id=u.id
) t
where valid_licence > 0;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3749 次 |
最近记录: |