sql - 加入具有重复值的列时避免重复
问题描述
我正在尝试加入在我尝试加入的列中具有多个重复结果的表列。一个例子看起来有点像:
Month | code | crime
-----------------------
2017-1 | EO99 | Burglary
2017-1 | EO99 | Shoplifting
2017-2 | FO01 | Anti-Social Behaviour
正在加入的表如下所示:
Contents | F4
-----------------------
EO99 | 4581
EO98 | 10255
FO01 | 4898
期望的结果是:
Month | code | crime | Population
---------------------------------------|------------
2017-1 | EO99 | Burglary | 4581
2017-1 | EO99 | Shoplifting | 4581
2017-2 | FO01 | Anti-Social Behaviour | 4898
我正在尝试加入该代码列以添加包含人口数据的第四列。这是我当前的查询:
DROP TABLE LSOA_crimes_2017_joined;
SELECT DISTINCT
crimes_data_GM_2017_2018.*,
['2017_LSOA_Pop.'].F4 AS Population
INTO
LSOA_crimes_2017_joined
FROM
crimes_data_GM_2017_2018 AS data,
['2017_LSOA_Pop.']
INNER JOIN
crimes_data_GM_2017_2018 ON
crimes_data_GM_2017_2018.[LSOA code] =
['2017_LSOA_Pop.'].[Contents]
WHERE
crimes_data_GM_2017_2018.Month LIKE '2017%';
使用 Distinct 有助于避免它为每个结果所做的疯狂重复,但由于某些结果完全相同但犯罪实例不同,我需要两者都在新表中。
解决方案
您在 from 子句中有两个表,这正在创建笛卡尔积。您可能需要执行以下操作:
DROP TABLE LSOA_crimes_2017_joined;
SELECT DISTINCT
crimes_data_GM_2017_2018.*,
['2017_LSOA_Pop.'].F4 AS Population
INTO
LSOA_crimes_2017_joined
FROM
crimes_data_GM_2017_2018 AS data
INNER JOIN
['2017_LSOA_Pop.'] ON
crimes_data_GM_2017_2018.[LSOA code] =
['2017_LSOA_Pop.'].[Contents]
WHERE
crimes_data_GM_2017_2018.Month LIKE '2017%';
推荐阅读
- couchbase - 磁盘扩展后 CouchBase 无法正确重新启动
- algorithm - 在邻接列表中查找路径
- javascript - javascript 浅拷贝和深拷贝什么时候做
- string - 当我删除这个“WORD 13”时它工作正常,但我想移动整个 'str1
- javascript - 无法使用 javascript 在 animateCC 中循环图层
- asp.net-mvc - 列表的模型绑定
一个元素列表失败 - python - PySpark - 数据框操作
- c++ - 如果 std::variant 的析构函数包含 void* 数据,它会做什么
- mongodb - MongoDB / Mongoose如何通过_id返回嵌套子文档
- python - 列表中的递归问题