gpt4 book ai didi

MySQL使用子查询未知列

转载 作者:行者123 更新时间:2023-11-29 23:30:33 25 4
gpt4 key购买 nike

执行此查询时收到错误:

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_visualizacoes”

为什么 qtde_visualizacoes 不存在?

非常感谢!

最佳答案

您不能在 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_projeto_view 中没有匹配行的所有 cp_projecto。您的原始查询只会返回包含单列 0 的行,这没有多大意义。如果您想要计数,请执行以下操作:

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_projeto_view(projeto, id_pessoa) 上创建索引。

关于MySQL使用子查询未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26613318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com