在postgres Query中使用表名而不是其别名

时间:2015-01-14 06:40:04

标签: sql postgresql slick

我在构建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),因此无法相应地更改代码中的查询。

有没有办法解决这个问题?

0 个答案:

没有答案