使用子查询的MySQL未知列
执行此查询时,我收到一个错误:使用子查询的MySQL未知列,mysql,Mysql,执行此查询时,我收到一个错误: SELECT (SELECT count(cp_projeto_view.id) FROM cp_projeto_view WHERE cp_projeto_view.id_projeto = cp_projeto.id AND cp_projeto_view.id_pessoa = 467 LIMIT 1) AS qtde_visualizacoes FROM cp_projeto WHERE qtde_visualizacoes = 0 错误是:#
SELECT
(SELECT count(cp_projeto_view.id) FROM cp_projeto_view WHERE cp_projeto_view.id_projeto = cp_projeto.id AND cp_projeto_view.id_pessoa = 467 LIMIT 1) AS qtde_visualizacoes
FROM cp_projeto
WHERE qtde_visualizacoes = 0
错误是:#1054-where子句中的未知列“qtde_visualizeaces”
为什么qtde_可视化工具不存在
多谢各位 在
where
子句中不能使用列别名(除非使用子查询)。MySQL有一个扩展,您可以使用having
:
SELECT (SELECT count(cp_projeto_view.id)
FROM cp_projeto_view
WHERE cp_projeto_view.id_projeto = cp_projeto.id AND cp_projeto_view.id_pessoa = 467
LIMIT 1
) AS qtde_visualizacoes
FROM cp_projeto
HAVING qtde_visualizacoes = 0
编辑:
您可能需要的查询更像:
select p.*
from cp_projecto p
where not exists (select 1 from cp_projeto_view pv where pv.id_projeto = p.id and pv.id_pessoa = 467)
这将返回所有在cp\u项目视图中没有匹配行的cp\u项目。原始查询将只返回一列为0
s的行,这没有多大意义。如果需要计数,请执行以下操作:
select count(*) as cnt
from cp_projecto p
where not exists (select 1 from cp_projeto_view pv where pv.id_projeto = p.id and pv.id_pessoa = 467)
而且,为了提高性能,请在cp\u projeto\u视图(projeto,id\u pessoa)
上创建一个索引,因为父查询除了使用过滤器外没有什么作用,所以您最好删除父查询,并将having放入子查询中。我尝试使用having,但速度非常慢:(