我在构建postgres查询时遇到问题。我在Scala中使用Slick连接到数据库。但是,在少数情况下,我需要为光滑生成的查询手动添加一些额外的where子句。 Slick使用列的别名生成查询,但是在附加where条件时,我不知道slick给出的别名。所以我试图直接使用表名和列名,但面临查询问题。
SELECT x2.x3,
x2.x4,
x5.x6
FROM (
SELECT x7."SkillId" AS x3,
x7."Name" AS x4,
x7."Description" AS x8,
x7."IsRemoved" AS x9,
x7."SkillCategoryId" AS x10
FROM "base"."Skill" x7
) x2
INNER JOIN (
SELECT x11."SkillCategoryId" AS x12,
x11."Name" AS x6,
x11."Description" AS x13,
x11."IsRemoved" AS x14
FROM "base"."SkillCategory" x11
) x5 ON x2.x10 = x5.x12
WHERE base."Skill"."IsRemoved" = 'false'
LIMIT 10 offset 0
以上查询将错误视为
ERROR: missing FROM-clause entry for table "Skill"
LINE 3: where base."Skill"."IsRemoved" = 'false' LIMIT 10 OFFSET 0
但是,如果我将where子句更改为where x2.x9 = 'false' LIMIT 10 OFFSET 0
,则查询将成功执行。
但我不知道别名是什么(x2 and x9
),因此无法相应地更改代码中的查询。
有没有办法解决这个问题?