列不存在?

Jos*_*eph 5 sql postgresql

想知道是否有人可以帮助我解决这个问题:

SELECT u1.id,count(DISTINCT u2.userstatus) as TEMPCOLUMN FROM users AS u1
JOIN friendssym ON u1.id = friendssym.user_id
JOIN (SELECT * FROM users) as u2 ON friendssym.friend_id=u2.id
WHERE TEMPCOLUMN=1 
group by u1.id;
Run Code Online (Sandbox Code Playgroud)

我想只有计数(重命名)等于1的结果.我的查询出错了:

 ERROR:  column "tempcolumn" does not exist
Run Code Online (Sandbox Code Playgroud)

但该栏目应该存在,对吧?有人可以帮忙吗?谢谢!

OMG*_*ies 4

您不能在 WHERE 子句中引用列别名。

  SELECT u1.id,
         COUNT(DISTINCT u2.userstatus) as TEMPCOLUMN 
    FROM USERS AS u1
    JOIN friendssym ON u1.id = friendssym.user_id
    JOIN USERS as u2 ON friendssym.friend_id = u2.id      
GROUP BY u1.id
  HAVING COUNT(DISTINCT u2.userstatus) = 1
Run Code Online (Sandbox Code Playgroud)

在传统 SQL 中,最早可以引用列别名的是ORDER BY子句。但 MySQL 和 SQL Server 允许在HAVINGandGROUP BY子句中进行访问。