Mysql

根據條件選擇表中不存在的行

  • July 26, 2022

我有兩張表學生表和費用表:

第一桌(學生):

二表(費用):

我想從費用表中獲取那些沒有按月支付金額的學生的行。例如,想要從第二個表中獲取那些在 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

引用自:https://dba.stackexchange.com/questions/314873