假设您有两个表:marks和student_info。下面分别给出两个示例
name | roll_no | perc_marks |
---|---|---|
阿尼凯特 | 12 | 24 |
西迪 | 45 | 65 |
亚什 | 26 | 42 |
伊莎 | 56 | 87 |
name | roll_no | age | sex |
---|---|---|---|
阿尼凯特 | 12 | 26 | M |
伊莎 | 56 | 25 | F |
西迪 | 45 | 23 | F |
亚什 | 26 | 25 | M |
现在,假设您的经理在工作时查看了两个表并告诉您:“为什么我们有两个表?简化一切,将所有内容转移到一张桌子上!”
因此,您决定将perc_marks列添加到student_info表中。
ALTER TABLE student_info ADD COLUMN perc_marks integer
现在,您将如何填充此列?您会为每列手动添加标记吗?这将使房间充满很多错误,并且非常耗时。相反,这是您可以做的-
UPDATE student_info SET perc_marks =marks.perc_marksFROM marks WHERE student_info.roll_no = marks.roll_no
在这里,roll_no用作两个表之间的公共字段,并更新student_info表中标记的值。请注意,这里的假设是在标记表中每个roll_no只有一个条目。如果在标记表中有多行具有相同的roll_no,它将使PostgreSQL感到困惑。通常,主键/外键用作公共字段,以避免这种混淆。
现在,如果查询student_info表(SELECT * from student_info),您将看到以下输出:
name | roll_no | age | sex | perc_marks |
---|---|---|---|---|
阿尼凯特 | 12 | 26 | M | 24 |
伊莎 | 56 | 25 | F | 87 |
西迪 | 45 | 23 | F | 65 |
亚什 | 26 | 25 | M | 42 |
如您所见,marks表中的perc_marks的值已成功添加到student_info中。