【发布时间】:2018-03-28 12:28:36
【问题描述】:
我有两张这样的表:
表 1:City - 主键:ID_City:
| City | ID_City | ID_State|
+-----------+---------+---------+
| Chennai | 1 | 2 |
| Bengaluru | 2 | 1 |
| Lucknow | 3 | 3 |
| . | . | . |
| . | . | . |
我正在将新城市添加到现有数据库中,同时使用 NOT IN 检查现有城市。 @table 如下所示:
表一:@table
| City | ID_State|Zip_Code|
+-----------+---------+--------+
| Chennai | 2 |00001 |
| Chennai | 2 |00002 |
| Chennai | 2 |00003 |
| Bengaluru | 1 |10011 |
| Bengaluru | 1 |10012 |
| Bengaluru | 1 |10013 |
| Lucknow | 3 |20001 |
| Mysore | 4 |50001 |
| Mysore | 4 |50002 |
| Mysore | 4 |50003 |
| . | . | . |
预期结果:
查询应该检查已经存在的城市并过滤掉那些不应该添加的城市。 (这是使用 NOT IN 完成的)
另外,如果有多行相同城市,则不应添加相同城市的多个副本。例如:查询应该只添加一行 City- 'Mysore' 而不是三行
我执行的查询:
SELECT
City, id_state
FROM
@table
WHERE
City NOT IN (SELECT City FROM City WHERE City IS NOT NULL)
AND id_state NOT IN (SELECT id_state FROM City WHERE id_state IS NOT NULL)
【问题讨论】:
-
请记住,城市名称不是唯一的。例如,华盛顿是多个州的城市名称。 en.wikipedia.org/wiki/List_of_the_most_common_U.S._place_names
-
如何使用 JOINS 做到这一点?
标签: sql sql-server notin