【问题标题】:need to select query or delete query to get this result or delete duplicate data需要选择查询或删除查询才能得到此结果或删除重复数据
【发布时间】:2019-10-14 23:30:33
【问题描述】:

我得到数据,我想选择或删除查询以获得预期的结果

sql服务器查询

select *,
         row_number() over (order by (select '' )) as seqnum
  from [elo].[dbo].[objkeys] 
  where parentid in (select parentid
                     from [elo].[dbo].[objekte] inner join
                          [elo].[dbo].[objkeys] 
                           on objid = parentid 
                     where objmask = '52' and okeydata like 'approve'
                  )

//// 试试这个查询,但不行

与 cte AS( 选择 *, row_number() over (order by (select '' )) as seqnum 来自 [elo].[dbo].[objkeys] parentid 在哪里(选择 parentid 来自 [elo].[dbo].[objekte] 内连接 [elo].[dbo].[objkeys] 在 objid = parentid 其中 objmask = '52' 和 'approve' 之类的 okeydata ) ) 删除 cte where seqnum >1

实际结果

parentid    okeyno      okeyname        okeydata            
 652          0          NAME             uwk           
 652          1         NUMBER             1        
 652          2         ALAIETIMAD      approve     
 652          51        ELO_FNAME       16.jpg      

 653          0         NAME              uwk           
 653          1        NUMBER              1        
 653          2       ALAIETIMAD         approve        
 653         51       ELO_FNAME          16.jpg     

 656          0         NAME              b     
 656          1        NUMBER             1     
 656          2       ALAIETIMAD        approve     
 656         51       ELO_FNAME          14.jpg     

 657         0      NAME                  b     
 657         1      NUMBER                1     
 657         2      ALAIETIMAD         approve      
 657         51     ELO_FNAME          16.jpg       

 661         0      NAME              abdalah       
 661         1      NUMBER              1       
 661         2      ALAIETIMAD        approve       
 661         51     ELO_FNAME         16.jpg        

 662         0      NAME             abdalah        
 662         1      NUMBER             1        
 662         2      ALAIETIMAD       approve        
 662         51     ELO_FNAME        16.jpg 

需要结果

parentid    okeyno      okeyname        okeydata            
 652          0      NAME                 uwk           
 652          1     NUMBER                 1        
 652          2     ALAIETIMAD         approve      
 652          51    ELO_FNAME          16.jpg       


 656          0     NAME                 b      
 656          1     NUMBER               1      
 656          2     ALAIETIMAD       approve        
 656         51     ELO_FNAME        14.jpg     



 661         0      NAME             abdalah        
 661         1      NUMBER             1        
 661         2      ALAIETIMAD       approve        
 661         51     ELO_FNAME        16.jpg     

【问题讨论】:

  • 请解释逻辑。
  • 一次性获取用户的批准数据
  • 删除 okeyname 中同名道具的重复数据
  • objmask like 52 要么没有做你想做的事,要么是以一种不必要的混乱方式编写的。 LIKE 仅对字符串类型起作用,因此整数文字 52 将需要隐式转换。它在功能上与objmask = '52' 相同(但您可能想要objmask = 52)。避免不必要的转换;如果以这种方式跳过索引,它们可能会对性能产生不良影响。
  • 好的杰罗恩·莫斯特

标签: sql sql-server database select sql-delete


【解决方案1】:

您可以尝试以下方法吗:

SELECT * FROM 
(
select *,
         row_number() over (order by (select '' )) as seqnum
  from [elo].[dbo].[objkeys] 
  where parentid in (select parentid
                     from [elo].[dbo].[objekte] inner join
                          [elo].[dbo].[objkeys] 
                           on objid = parentid 
                     where objmask = '52' and okeydata like 'approve'
                  )
) as t
where parentid in
(
SELECT DISTINCT min(parentid) FROM 
(
select *,
         row_number() over (order by (select '' )) as seqnum
  from [elo].[dbo].[objkeys] 
  where parentid in (select parentid
                     from [elo].[dbo].[objekte] inner join
                          [elo].[dbo].[objkeys] 
                           on objid = parentid 
                     where objmask = '52' and okeydata like 'approve'
                  )
) as t2
where okeyname = 'NAME'
group by okeyno,okeyname,okeydata
)

【讨论】:

  • 在哪里 parentid 给我错误(SELECT DISTINCT min(parentid) FROM (
  • @AbdullahShasban 它缺少表格别名。
猜你喜欢
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多