MYSQL:根据条件选择特定的列值

MYSQL:根据条件选择特定的列值,mysql,Mysql,我有一张带列的桌子 id doctor_name charges_cash charges_cashless 1 1 300 600 2 2 200 400 现在我正在尝试运行此查询: SELECT ipd.patient_name, r.room_name, doctor.doctor_name, CASE p.tpa_name WHEN NULL THEN i.charges_cash EL

我有一张带列的桌子

id doctor_name charges_cash charges_cashless
1      1             300         600
2      2             200         400
现在我正在尝试运行此查询:

SELECT ipd.patient_name, r.room_name, doctor.doctor_name,
CASE p.tpa_name
WHEN NULL
THEN i.charges_cash
ELSE i.charges_cashless
END AS 'charges'
FROM `daily_ward_entry` d, ipd_charges i, ipd_patient_entry ipd, room_charges r, 
patient_detail p, doctor
WHERE d.doctor_visit_name = i.doctor
AND r.id = d.room_name
AND d.patient_name = ipd.id
AND d.doctor_visit_name = doctor.id
我得到的收费结果为400,而p.tpa_name为空,我预计为200, 我不知道我到底做错了什么

结果集是这样的

patient_name  room_name doctor_name charges
Sapna Agrawal  MG-1      Dr. Dungri  400

谢谢。

NULL
相比,您需要
IS
运算符

CASE WHEN p.tpa_name IS NULL
     THEN i.charges_cash
     ELSE i.charges_cashless
END AS 'charges'

您缺少了其余的表?可能是您的一些表有多个匹配的行,因此在主表上有重复的行。但是,如果不知道表结构是什么,不知道测试数据的一些概念,就很难判断。