繁体   English   中英

如何根据两个条件将一列连接到另一列

[英]How to join a column to another column based on two conditions

我有点不知所措,为什么这不起作用/更新。 我有一个“站点”表和一个“访问”表。 “站点”表包含数据库中的所有唯一“站点”,“访问”表包含对所有站点的所有唯一访问。

地点

site_id 地区 地点
1 一个 一个
2 一个 b
3 b 一个
4 b b

访问

访问ID 地区 地点 日期 site_id
1 一个 一个 1
2 一个 b 2
3 b 一个 3
4 b b 2
5 C 一个 3
6 C b 1
7 d 一个 2
8 d b 2

当区域和站点彼此相等时,我希望将 site_id 填充到“访问”表中。 这是我尝试过的。 它不会抛出错误,但不会在 visit.site_id 中填充任何内容。

update visit a 
set site_id = 
    (select s.site_id
    from site s
    where (s.region, s.site)  = (a.region, a.site));

你的方法有问题,即使它有效,它也不能正常工作,因为如果两个表中有相同的元组,你的查询将更新所有它们。

update visit a 
set site_id = 
    (select s.site_id
    from sites s
    where (s.region, s.site)  = (a.region, a.site) and a.region = a.site);

用另一种方式重写:

update visit a 
set site_id = 
    (select s.site_id
    from sites s
    where  s.region = a.region and s.site = a.site and a.region = a.site);

结果如下(我的 PostgreSQL 版本是 13): 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM