Oracle11g 如何从sql中具有重复值的属性表中删除所有记录?
我有一个人行道和汽车防撞台。关于执行内部连接ieOracle11g 如何从sql中具有重复值的属性表中删除所有记录?,oracle11g,oracle10g,Oracle11g,Oracle10g,我有一个人行道和汽车防撞台。关于执行内部连接ie select * from ped inner join vehicle on ped.CRSH_NUM = vehicle.CRSH_NUM ; 我在联接结果中得到重复的值 CRSH_NUM CAL_YR PER_SQ xyz xyz xyz xyz xyz xyz ------------------------------------------------------------------- 124035
select *
from ped
inner join vehicle on ped.CRSH_NUM = vehicle.CRSH_NUM ;
我在联接结果中得到重复的值
CRSH_NUM CAL_YR PER_SQ xyz xyz xyz xyz xyz xyz
-------------------------------------------------------------------
124035430 2015 2 FL 32148 086 2 4 1
127226060 2015 1 FL 33755 054 1 3 3
704850370 2015 2 FL 33406 024 2 1 7
704850370 2015 2 FL 33406 024 2 1 7
708287950 2015 3 FL 32724 059 1 1 7
708287950 2015 2 FL 32724 060 1 1 7
734803610 2015 2 FL 32724 043 1 2 3
--------------------------------------------------------------------
我想要的结果是:
CRSH_NUM CAL_YR PER_SQ xyz xyz xyz xyz xyz xyz
-------------------------------------------------------------------
124035430 2015 2 FL 32148 086 2 4 1
127226060 2015 1 FL 33755 054 1 3 3
734803610 2015 2 FL 32724 043 1 2 3
--------------------------------------------------------------------
另外,我删除了其他属性,因为它们不适合这里。我的意思是,我将运行的查询需要选择所有列
选择*而不是选择CRSH_NUM、CAL_YR、PER_SQ、xyz。。。。。从tablename开始
我使用的是sql developer和oracle 12c server。如果您希望所有记录都与重复的崩溃数值无关,可以使用group by、having和not in
select *
from ped
inner join vehicle on ped.CRSH_NUM = vehicle.CRSH_NUM
where crsh_num not in (
select CRSH_NUM
from ped
inner join vehicle on ped.CRSH_NUM = vehicle.CRSH_NUM
group by CRSH_NUM
having count(*)>1;
)
在注释之后,可以只为每个cras_num分配一个从1开始递增的行号,然后只显示1的行?顺序依据决定显示哪些记录和值,因为它们不同
WITH CTE AS (SELECT *, row_number() over (partition by CRSH_NUM order by Cal_year Desc Per_SEQ Desc) RN
FROM ped
INNER join vehicle
on ped.CRSH_NUM = vehicle.CRSH_NUM
Select * from cte where RN = 1
您实际使用的数据库是MySQL还是SQL Server?MySQL还是SQL Server?请正确标记。这些不是重复的。这些记录的存在是因为其他数据是相关的和唯一的,前提是您加入PK/FK关系704850370是重复的,因为ped或车辆列表碰撞次数多次。列标题xyz xyz,xyz除了说明结果中标记为xyz的第6列显示值不重复之外,对隔离问题没有帮助。虽然第一条和第二条记录看起来是相同的,但您可以删除数据,使其唯一,为什么704850370不在您的预期结果中?708287950也不是?你确定要加入PK/FK关系吗?@xQbert我唯一的请求是从列CRSH_NUM中删除重复/重复的值。若你们想看更大的画面,每一次涉及一辆以上车辆的行人碰撞都有几行,每行代表一辆车。所以,我想消除所有涉及1名行人和多辆车或1辆车和多辆车的碰撞。