sql - 根据 if 选择
问题描述
直升机,
我正在尝试进行选择
第一列 currentStatus 有 2 个变体:“已付费”、“未付费”
第二列,payment_id,只有在付款完成后才会被填充,但在某些情况下它没有得到 payment_id,我想从选择中忽略这些情况。
我正在尝试选择状态为已付款和未付款的所有行,但仅在具有 payment_id 时才选择已付款,而未付款没有要选择的 payment_id。
SELECT DISTINCT
status
FROM table_name
WHERE
IF(status IN ('Unpaid'), '', paid_id <> '')
这不会返回任何未支付的行,我做错了什么?
解决方案
我正在尝试选择状态为已付款和未付款的所有行,但仅在具有 payment_id 时才选择已付款,而未付款没有要选择的 payment_id。
您想要的过滤逻辑:
where status = 'Unpaid' or
(status = 'Paid' and paid_id is not null)
如果status
只取这两个值,您可以将其简化为:
where status = 'Unpaid' or paid_id is not null
推荐阅读
- r - R将一个数据帧中的值替换为其他数据帧中的值,其中行值表示列位置
- reactjs - antd 标签上不存在属性 id
- javascript - javascript - 在多个“id”中显示函数
- java - 需要在 Java 中禁用 Nimbus LAF 中的“悬停”效果
- javascript - 如何在 JS(jQuery) 中为翻译添加附加赋值(+=)?
- python - 拒绝连接和轮询更改失败:尝试使用 Selenium GeckoDriver 和 Firefox 获取资源错误时出现 NetworkError
- r - 递归地对R中的向量进行排序
- c# - 全局防止鼠标进入屏幕区域
- javascript - 如何在 github.io 页面中向现有 html 添加另一个 html 文件?
- c# - Umbraco 会员 - 如何在注册表单中保存自定义属性?