Was wondering if someone could help me out a little with this query:
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;
I want to only have results where the count (which is renamed) is equal to 1. I get an error with this query:
ERROR: column "tempcolumn" does not exist
But the column should exist, right? Can anyone assist? Thanks!
You can't reference a column alias in the WHERE clause.
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
In traditional SQL, the earliest you can reference a column alias is the ORDER BY
clause. But MySQL and SQL Server allow access in the HAVING
and GROUP BY
clauses.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With