SQL Server 在SQL中,相同的两个人必须是一个人[关闭]

w7t8yxp5  于 2022-11-21  发布在  其他
关注(0)|答案(5)|浏览(133)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

3天前关闭。
Improve this question
我写了一个sql查询,但是正如您所注意到的,有两个相同的记录具有相同的名称和id号。我需要以某种方式显示它们,而不使用Distinct。我使用的中间件填充值 基于UserTableID。如果使用DISTINCT,则当UserTableID存在时,查询将不起作用。您能帮助我吗?

select UserTableID as [ID], Ad_Soyad AS [NAME SURNAME], Kimlik_No AS [IDENTIFICATION NUMBER]
from SA_OtelRezervasyon

ID   NAME SURNAME          IDENTIFICATION NUMBER 
1     Ali AKYÜZ              11111111111
2     Osman                  22222222222
3     Ali AKYÜZ              11111111111
4     Mustafa Batuhan        33333333333
bzzcjhmw

bzzcjhmw1#

或者 只 使用 简单 的 旧 SQL :

select min(UserTableID) as [ID], Ad_Soyad AS [NAME SURNAME], Kimlik_No AS [IDENTIFICATION NUMBER]
from SA_OtelRezervasyon
group by Ad_Soyad, Kimlik_No

中 的 每 一 个

gupuwyp2

gupuwyp22#

我通常会先选择,看看是否可以更正数据中的错误。如果记录不应该重复,我会看看是否可以删除ID 1或ID 3。我会先看看JOIN数据是否与两个ID都关联,然后更新对单个记录的任何外键引用。
然后,我将保存所需的步骤,这样我就可以查找新的重复项,并尝试让应用程序团队(如果适用)帮助确定最初是如何创建重复项的。
如果这样做,您的查询将不需要更改。

rslzwgfq

rslzwgfq3#

你可以使用ROW_NUMBER函数做消除重复行的操作。

WITH CTE_OtelRezervasyon AS
(
   SELECT UserTableID AS [ID]
   , Ad_Soyad AS [NAME SURNAME]
   , Kimlik_No AS [IDENTIFICATION NUMBER]
   , ROW_NUMBER() OVER (PARTITION BY Ad_Soyad, Kimlik_No ORDER by UserTableID) AS RN
   FROM SA_OtelRezervasyon
)
SELECT [ID], [NAME SURNAME],  [IDENTIFICATION NUMBER]
FROM CTE_OtelRezervasyon 
WHERE RN = 1;
ukdjmx9f

ukdjmx9f4#

您的“用户”表ID中有“重复项”,您应该更新该表中的数据,因为当一个人有两个ID号时,您肯定会在表中得到两次。

eit6fx6z

eit6fx6z5#

请尝试以下操作(使用ROW_NUMBER):

WITH row_table AS (
       SELECT ROW_NUMBER() OVER(PARTITION BY ut.ID_Num ORDER BY ut.ID) AS new_row_number
              ,ut.UserTableID
              ,ut.Ad_Soyad
              ,ut.Kimlik_No
       FROM dbo.UserTable ut
       )
select * 
FROM row_table rt where rt.new_row_number = 1 order by rt.ID

相关问题