我的问题是基于这个主题(链接(,它是关于用另一个表中的相应值替换一个表的id,这对我来说很有效,但之后出现了问题。下面是我的表格,请注意与链接中的表格有一些不同。
name
+----------+-----------+-----------+
| name_id | color_id | shape_id |
+----------+-----------+-----------+
| 1 | 11 | 01 |
+----------+-----------+-----------+
| 2 | 22 | 02 |
+----------+-----------+-----------+
| 3 | 33 | 03 |
+----------+-----------+-----------+
color
+----------+-------+
| color_id | color |
+----------+-------+
| 11 | R |
+----------+-------+
| 22 | G |
+----------+-------+
| 33 | B |
+----------+-------+
shape
+----------+-------+
| shape_id | shape |
+----------+-------+
| 01 | S |
+----------+-------+
| 02 | T |
+----------+-------+
| 03 | C |
+----------+-------+
这就是我想要的输出:
+----------+-----------+
| color | shape |
+----------+-----------+
| R | S |
+----------+-----------+
| G | T |
+----------+-----------+
| B | C |
+----------+-----------+
但这是我的输出:
+----------+-----------+
| color | shape |
+----------+-----------+
| (11,"R") | (01,"S") |
+----------+-----------+
| (22,"G") | (02,"T") |
+----------+-----------+
| (33,"B") | (03,"C") |
+----------+-----------+
这是我尝试过的查询代码。
SELECT
color, shape
FROM
name
INNER JOIN
color ON name."color_id" = color."color_id"
INNER JOIN
shape ON name."shape_id" = shape."shape_id"
我想知道是否有一些方法可以直接将(11,"R"(替换为R,可能是通过SQL查询语法或其他方法。。。或者任何我可以用我现有的代码修改的东西。非常感谢。
在PostgreSQL中,如果你可以写没有字段或没有的表名。*那么PostgreSQL将以上述格式显示给你的字段和值,类似于数组。您必须使用*。或选择时的字段名称。
SELECT
color.*, shape.*
FROM
name
INNER JOIN
color ON name."color_id" = color."color_id"
INNER JOIN
shape ON name."shape_id" = shape."shape_id"
或者在.
写入字段名称后需要