sql - 如何设计代码以删除无关值以维护表的主键
问题描述
我有一个表,其中主键是一组字段。姓名加年龄是主键但是还有一个名为成员资格的字段必须说是或否,但在某些情况下,对于这种组合,它有是和否这两个值都是不正确的,所以我需要以这样的方式设计查询,它应该删除一个当主键字段不存在时为“是”
桌子
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' 值
解决方案
您可以排序membership
并保留找到的第一行,yes
如果 ano
存在则有效地丢弃 a。
例如:
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上的运行示例。
推荐阅读
- c++ - 生成具有类的 Actor (UE4)
- c# - 十六进制字符串到 ASCII 转换工作但不适用于所有字符
- node.js - 如何在没有权限被拒绝的情况下使用 google drive api 删除文件?
- c# - 如何在我的控制器中为每个请求只注入一个 DbContext 实例?
- c# - 错误 NU1202 包 Xamarin.Firebase.Database 60.1142.0 与 netstandard2.0 不兼容
- java - Stripe 在 android CardInputWidget 中添加 postal/zip
- git - 当我尝试从 Origin 获取时,EGit 说“Nothing to fetch”
- vue.js - 如何将 vuestorefront 与 shopify 集成
- r - 数据框中的字符向量的取消列表/取消嵌套?
- python - 如何从我的熊猫数据框中获得最多的配对?