生成sql语句,我现在有两个数据库表,一个为en1,一个为en2 ,里面都有city_name和city_id字段,en1中是有全部的city_name和city_id的对应关系(如,city_name为‘北京’,对应着city_id=1),但是会有重复的(例如,有多条数据为city_name=‘北京’,对应着city_id=1)。此时,我在en2中只有city_name的数据,想通过en1找到对应的city_id,并且修改en2的表中city_id的值(即已知city_name=‘北京’,想得到city_id为1并令en2的city_id=1)
时间: 2024-03-11 17:48:21 浏览: 96
你可以使用以下 SQL 语句来实现:
```
UPDATE en2
SET city_id = (
SELECT DISTINCT en1.city_id
FROM en1
WHERE en1.city_name = en2.city_name
)
WHERE EXISTS (
SELECT 1
FROM en1
WHERE en1.city_name = en2.city_name
);
```
这个 SQL 语句将根据 `en1` 表中的城市名称和城市 ID 对应关系,将 `en2` 表中对应的城市 ID 进行更新。如果 `en2` 表中的城市名称在 `en1` 表中没有对应的城市 ID,则不进行更新。
你可以将 `WHERE` 子句中的条件修改为你想要更新的城市名称,如下所示:
```
UPDATE en2
SET city_id = (
SELECT DISTINCT en1.city_id
FROM en1
WHERE en1.city_name = en2.city_name
)
WHERE EXISTS (
SELECT 1
FROM en1
WHERE en1.city_name = en2.city_name
)
AND en2.city_name = '北京';
```
这个 SQL 语句将只更新城市名称为“北京”的城市 ID。
阅读全文