生成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 08:48:21 浏览: 103
你可以使用以下 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。
相关问题
生成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,(即已知city_name=‘北京’,想得到city_id为1)
你可以使用以下 SQL 语句来实现:
```
SELECT DISTINCT en2.city_name, en1.city_id
FROM en1
JOIN en2 ON en1.city_name = en2.city_name;
```
这个 SQL 语句会将 `en2` 表中的每个城市名称与 `en1` 表中的所有城市名称进行匹配,然后返回不重复的城市名称和相应的城市 ID。如果你只想查询特定城市名称的城市 ID,可以在 `WHERE` 子句中添加条件,如下所示:
```
SELECT DISTINCT en2.city_name, en1.city_id
FROM en1
JOIN en2 ON en1.city_name = en2.city_name
WHERE en2.city_name = '北京';
```
这个 SQL 语句将只返回城市名称为“北京”的城市 ID。
书写sql语句,我现在有一个city表,里面有city_name(有数据)和city_id(有数据)和一个en表,里面也有city_name(有数据)和city_id(没有数据),我现在想通过en表的city_name在city中找到对应的city_id,保存到en表中
可以使用以下 SQL 语句:
```
UPDATE en
SET city_id = (SELECT city_id FROM city WHERE city.city_name = en.city_name)
WHERE city_id IS NULL;
```
这条语句会将 en 表中 city_id 为空的记录,通过对应的 city_name 在 city 表中查找对应的 city_id 并更新到 en 表中。
阅读全文