【问题标题】:How to design code to delete irrelevant value to maintain primary key for table如何设计代码以删除无关值以维护表的主键
【发布时间】:2020-07-30 00:20:32
【问题描述】:

我有一个表,其中主键是一组字段。 姓名加年龄为主键 但是还有一个名为 members 的字段必须说是或否,但在某些情况下,对于这种组合,它具有是和否这两个值都是不正确的,所以我需要以这样的方式设计查询,它应该删除一个在否时是的主键字段已存在

表格

Name -Xyz   age  20 membership yes 
Name Jkl    age  30 membership no
Name ABC    age  21 membership yes
Name ABC    age  21 membership no

在这种情况下,应该删除带有 yes 的 'ABC' 值,因为应该考虑带有 no 的 'ABC' 值

【问题讨论】:

  • 删除哪些的逻辑是什么?
  • 请用您正在使用的 dbms 标记您的问题。

标签: sql


【解决方案1】:

您可以按membership 排序并保留找到的第一行,如果存在no,则有效地丢弃yes

例如:

select
  name, age, membership
from (
  select t.*,
    row_number() over(partition by name, age order by membership) as rn
  from t
) x
where rn = 1

结果:

name  age  membership
----  ---  ----------
-xyz   20  yes       
ABC    21  no        
jkl    30  no        

请参阅SQL Fiddle 的运行示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多