Sql 如何从具有多个依赖项的表中删除列?

Sql 如何从具有多个依赖项的表中删除列?,sql,dependencies,Sql,Dependencies,所以我有一张桌子,它的结构和这个相似 group_id | code |code_type 1 45 '9' 2 56 '0' 3 56 'NA' 4 32 'NA' 问题是,对于同一个代码,我有多个代码类型,但这没关系,但当有“NA”时,我想将其从表中删除,因为显然我们有另一个代码类型来指定该代码。所以我们不需要那个“NA”。希望这是有意义的,如果需要的话,我很乐意澄清。因

所以我有一张桌子,它的结构和这个相似

group_id | code |code_type
 1         45       '9'
 2         56       '0'
 3         56       'NA'
 4         32       'NA'
问题是,对于同一个代码,我有多个代码类型,但这没关系,但当有“NA”时,我想将其从表中删除,因为显然我们有另一个代码类型来指定该代码。所以我们不需要那个“NA”。希望这是有意义的,如果需要的话,我很乐意澄清。因此,当所有的话都说了,我们将删除第3行,并保留其余的

如果要删除“NA”值,只需执行以下操作:

delete from t
    where code = 'NA';
如果要删除“NA”值,只需执行以下操作:

delete from t
    where code = 'NA';

您可以在Gordon的查询中添加一个检查,以确保只删除具有合法值的行:

delete from <your table>
  where code_type = 'NA'
  and code in (select distinct code from <your_table> where code_type <> 'NA')

您可以在Gordon的查询中添加一个检查,以确保只删除具有合法值的行:

delete from <your table>
  where code_type = 'NA'
  and code in (select distinct code from <your_table> where code_type <> 'NA')
怎么样

delete from t
    where code_type = 'NA'
    and exists (
      select null
      from t t1
      where t1.code = t.code
        and t1.code_type <> 'NA'
    )
当然,您可以用select*替换delete,以查看这将删除哪些行。

如何

delete from t
    where code_type = 'NA'
    and exists (
      select null
      from t t1
      where t1.code = t.code
        and t1.code_type <> 'NA'
    )

当然,您可以将delete替换为select*,以查看这将删除哪些行。

您不清楚同一代码是否可以存在除“NA”以外的多个值,但是下面的CTE使用行号窗口功能来识别模式,然后在CTE外部使用DELETE语句删除所有标记的行

);以CTE为例 从Foo中选择*,按代码顺序按组标识划分的行号
选择*FROM CTE WHERE Flag>1

您不清楚同一代码是否可以存在除“NA”以外的多个值,但是下面的CTE使用一个行号窗口函数来标识模式,然后在CTE外部使用DELETE语句来删除任何被标记的行

);以CTE为例 从Foo中选择*,按代码顺序按组标识划分的行号
选择*FROM CTE WHERE Flag>1

我不想删除所有的“NA”列,只想删除代码类型可能是相同代码的其他行。因此,如果一个代码只有一个代码类型,那就是'NA',那么我想保留它,这有意义吗?我不想删除所有的'NA'列,只是删除代码类型可以是同一代码的其他类型的行。因此,如果一个代码只有一种代码类型,那就是“NA”,那么我想保留它,这有意义吗?谢谢,现在我看到了,我觉得问这个问题很傻,只是需要一个子查询。谢谢,现在我看到了,我觉得问这个问题很傻,只是需要一个子查询。只是一点术语更正:你在删除行,而不是列。如果您真的想从表中删除列,drop将是一个更合适的术语。只需进行一点术语更正:您删除的是行,而不是列。如果你真的想从表中删除列,drop将是一个更合适的术语。是的,那么“NA”是我唯一想删除的,如果有其他代码类型使用相同的代码,那么可以保留它们。是的,那么“NA”是我唯一想删除的,如果有其他代码类型使用相同的代码,那么可以保留它们。