簡體   English   中英

MySQL未知列使用子查詢

[英]MySQL unknown column using subquery

執行此查詢時收到錯誤消息:

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_projecto中沒有匹配行的所有cp_projeto_view 您的原始查詢只會返回具有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_projeto_view(projeto, id_pessoa)上創建一個索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM