基于 if 的选择

时间:2021-07-09 13:01:19

标签: sql if-statement select

你好,

我正在尝试进行选择

第一列,currentStatus,有 2 个变体:'Paid', 'Unpaid'

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

我试图选择状态为“已付款”和“未付款”的所有行,但仅在有付款 ID 时才选择已付款,而未付款没有要选择的付款 ID。

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

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

1 个答案:

答案 0 :(得分:0)

<块引用>

我试图选择状态为“已付款”和“未付款”的所有行,但仅在有付款 ID 时才选择已付款,而未付款没有要选择的付款 ID。

你想要的过滤逻辑:

where status = 'Unpaid' or
      (status = 'Paid' and paid_id is not null)

如果 status 只采用这两个值,您可以将其简化为:

where status = 'Unpaid' or paid_id is not null