首页 > 解决方案 > 如何编写 JOIN 条件(使用 USING 子句)

问题描述

我想比较两个不同表中同名的两列,但我不断收到错误。

有没有办法在没有“public”和没有双引号的情况下进行表达""

SELECT "OrderNr"
FROM public."Export"
LEFT JOIN public."Temp"
USING "Export"."OrderNr" = "Temp"."OrderNr";

标签: sqlpostgresql

解决方案


您的 JOIN 语法错误。由于该列"OrderNr"在两个表中都存在,因此您还需要在 SELECT 列表中限定要从中获取它的表。使用表别名使这更容易。

SELECT e."OrderNr"
FROM public."Export" e
  LEFT JOIN public."Temp" t ON e."OrderNr" = t."OrderNr";

如果要使用该USING子句(我不推荐),则无需指定条件,而仅指定列名:

SELECT "OrderNr"
FROM public."Export" e
  LEFT JOIN public."Temp" t USING ("OrderNr");

通常public架构位于搜索路径中,因此您可以将其排除:

SELECT e."OrderNr"
FROM "Export" e
  LEFT JOIN "Temp" t ON e."OrderNr" = t."OrderNr";

推荐阅读