Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用子查询的MySQL未知列_Mysql - Fatal编程技术网

使用子查询的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,但速度非常慢:(