首页 > 解决方案 > 在 MySQL 中选择项目

问题描述

我想选择已支付状态的书名

但是如果没有状态为已付款的书名,则显示其他状态为其他书名

ITEMS

ID  bookname  code
1   cats      222
2   dogs      555
3   cows      777
4   goat      888
5   rubbit    999


PRODUCTS

ID booktitle  status 
1  222        paid
2  555        paid
3  777        notpyed
4  888        waitpyed
5  999        notmoney

询问

 SELECT 
      snd.code,  m.booktitle FROM
      products as m
      JOIN items as snd ON snd.code = m.booktitle WHERE CASE WHEN (m.status = 'paid') > 0 THEN m.status = 'paid' ELSE m.status = 'notpyed'  OR m.status = 'waitpyed'
      OR m.status = 'notmoney' END

标签: mysql

解决方案


您使用子查询来获取已付图书的总和

else 部分可能是m.status <> 'paid' ,但我不知道你有多少 sti

 SELECT 
      snd.code,  m.booktitle FROM
      PRODUCTS as m
      JOIN ITEMS as snd ON snd.code = m.booktitle 
      WHERE CASE WHEN (SELECT SUM(status = 'paid') FROM  PRODUCTS) > 0 THEN m.status = 'paid' 
                             ELSE m.status = 'notpyed'  OR m.status = 'waitpyed'
                                  OR m.status = 'notmoney' END
代码 | 书名
---: | --------:
 222 | 222
 555 | 555

db<>在这里摆弄


推荐阅读