MySQL:Case When 替代/正确语句

标签 mysql sql

我有这样的表:

Order    | UserID | Date       | Channel |
------------------------------------------
1        | 1      | 2015/01/01 | Direct  |
2        | 1      | 2015/01/02 | Natural |
3        | 1      | 2015/01/03 | PPC     |
4        | 1      | 2015/01/04 | Direct  |
1        | 2      | 2015/01/01 | Natural |
2        | 2      | 2015/01/02 | Natural |
1        | 3      | 2015/01/01 | Direct  |
2        | 3      | 2015/01/02 | Natural |
3        | 3      | 2015/01/03 | PPC     |
1        | 4      | 2015/01/01 | Natural |
2        | 4      | 2015/01/02 | PPC     |
3        | 4      | 2015/01/03 | Direct  |
4        | 4      | 2015/01/04 | Natural |

我想删除 Order = 1 不是“自然”的完整用户 ID。 换句话说,我想删除未通过“自然” channel 开始其网站之旅的用户。

这是我希望看到的表格:

Order    | UserID | Date       | Channel |
------------------------------------------
1        | 2      | 2015/01/01 | Natural |
2        | 2      | 2015/01/02 | Natural |
1        | 4      | 2015/01/01 | Natural |
2        | 4      | 2015/01/02 | PPC     |
3        | 4      | 2015/01/03 | Direct  |
4        | 4      | 2015/01/04 | Natural |

我尝试使用 CASE WHEN 语句但结果很差:

SELECT
    CASE
        WHEN Order = 1
        WHEN Channel = 'Natural'
    END
FROM tablename

最佳答案

您需要使用Where 子句从表中过滤记录而不是case 语句

SELECT *
FROM tablename
WHERE Order = 1
  AND Channel <> 'Natural'

关于MySQL:Case When 替代/正确语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561564/

相关文章:

mysql - Node Express mysql 连接错误处理优化

sql - 缓存 SQL 查询

mysql - 想知道我每月有多少新访客

php - Symfony2 Doctrine 自定义查询问题

sql - where 子句中的多个 'in' 语句需要相互匹配

sql - 更新 postgresql 中的列

MySQL IFNULL、Alias 和 LEFT JOIN 导致未知列错误

mysql - 我应该引用字段 ID 还是将实际数据放在同一行中?

mysql - 以下查询不应该产生相同的结果吗? (MySQL)

php - 没有错误,但是我的记录没有被添加到我的数据库中