I would like to:
SELECT "TABLE2".*
FROM (SELECT DISTINCT "Id" FROM DB1."PUBLIC"."TABLE1")
INNER JOIN DB1."PUBLIC"."TABLE2" ON DB1."PUBLIC"."TABLE1"."Id" = DB1."PUBLIC"."TABLE2"."Id" WHERE "queryGroupName" not in ('DELETE');
I'm getting following error message:
SQL compilation error: error line 4 at position 3 invalid identifier 'DB1.PUBLIC.TABLE1."Id"'
Does anyone know why?
TABLE1 is not in the main query. It's part of a subquery. If you alias the subquery, you can reference it by the alias.
SELECT "TABLE2".*
FROM (SELECT DISTINCT "Id" FROM DB1."PUBLIC"."TABLE1") T1
INNER JOIN DB1."PUBLIC"."TABLE2" ON T1."Id" = DB1."PUBLIC"."TABLE2"."Id"
WHERE "queryGroupName" not in ('DELETE');
If the goal is to use JOIN on T1 table only as a filter, IN/EXISTS could be used:
SELECT T2.*
FROM DB1."PUBLIC"."TABLE2" AS T2
WHERE T2."Id" IN (SELECT T1."Id" FROM DB1."PUBLIC"."TABLE1" AS T1)
AND T2."queryGroupName" NOT IN ('DELETE');
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.