首页 > 解决方案 > 根据 if 选择

问题描述

直升机,

我正在尝试进行选择

第一列 currentStatus 有 2 个变体:“已付费”、“未付费”

第二列,payment_id,只有在付款完成后才会被填充,但在某些情况下它没有得到 payment_id,我想从选择中忽略这些情况。

我正在尝试选择状态为已付款和未付款的所有行,但仅在具有 payment_id 时才选择已付款,而未付款没有要选择的 payment_id。

SELECT DISTINCT
status
FROM table_name          
WHERE
IF(status IN ('Unpaid'),  '', paid_id <> '')

这不会返回任何未支付的行,我做错了什么?

标签: sqlif-statementselect

解决方案


我正在尝试选择状态为已付款和未付款的所有行,但仅在具有 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

推荐阅读