首页 > 解决方案 > SQL:根据条件删除行

问题描述

我需要删除列的值,这可以通过 for 循环和 if 条件轻松实现。但是,我不知道如何在 SQL 中执行。我的表如下所示

dt   _______ level ________ cohort_size ________ daily_users
2020 _______ D5    ________ 345.        ________ 12
2020 _______ D3    ________ 32          ________ 32
2019 _______ D0    ________ 78.         ________ 78 
2019 _______ D4.   ________ 67          ________ 56
2018 _______ D0    ________ 56          ________ 9

我要做的是删除级别为 D0 和群组大小 = 每日活跃用户的行。所以基本上我应该只删除第 3 行。其他一切都保持不变。您对如何进行此操作有任何建议吗?

谢谢你。

标签: mysqlsql

解决方案


您可以使用where子句。一种方法直接遵循您的逻辑:

select t.*
from t
where not (level = 'D0' and cohort_size = daily_users);

注意:为此,它假定三列不是NULL. 它可以很容易地调整来处理。

如果您确实想从表中删除该行,请使用delete

delete t from t
    where level = 'D0' and cohort_size = daily_users;

推荐阅读