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