Mysql
根據條件選擇表中不存在的行
我有兩張表學生表和費用表:
第一桌(學生):
二表(費用):
我想從費用表中獲取那些沒有按月支付金額的學生的行。例如,想要從第二個表中獲取那些在 2022-07 年未支付費用的學生的行
建議。使用正確的日期數據類型來儲存日期,
2022-07
不是有效的日期數據類型,你會為以後省去很多痛苦。根據問題,存在一種使用方式:
select s.std_name from Student s where not exists (select 1 from Fee f where s.std_id=f.std_id and f.Month='2022-07');
使用左連接的另一種方法:
select s.std_name from Student s left join Fee f on s.std_id=f.std_id and f.Month='2022-07' where f.Month is null ;
您將受益於以下指標
key std_month(`std_id`,`Month`) --- > on Fee table key `std_id`(`std_id`) --- > on Student table
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=ecd96397f42659ba45e8e848e42cd90c