问题描述
SELECT r.id AS Id,r.slot AS Slot,rg.name AS Grade,rt.name AS Type,r.main_stat AS Main Stat,r.stat01 AS 1st Substat,r.stat02 AS 2nd Substat,r.stat03 AS 3rd Substat,r.stat04 AS 4th Substat,CASE WHEN r.isEquipted = 0 THEN 'FALSE' ELSE 'TRUE' END AS isEquipted
FROM runes r
INNER JOIN rune_grade rg
ON r.grade_id = rg.id
INNER JOIN rune_type rt
ON r.type_id = rt.id
WHERE r.id = 7;
我有这个查询,只给我一条记录。 WHERE子句中的这个“ 7”在我的代码中是可变的。 我想删除为我提供NULL值的列。 该查询返回:
ID Slot Grade Type M Stat 1st Stat 2nd Stat 3rd Stat 4th Stat
7 4 normal swift spd-24 NULL NULL NULL NULL
如果where子句等于其他id,则1st 2nd 3rd 4th Stat可以具有值。
ID Slot Grade Type M Stat 1st Stat 2nd Stat 3rd Stat 4th Stat
6 3 normal swift spd-24 atk-32 hp-355 NULL NULL
对不起,英语不好。
解决方法
使用COALESCE()
过滤掉所有[X Stat]
列均为NULL
的行:
WHERE r.id = 7
AND COALESCE(r.stat01,r.stat02,r.stat03,r.stat04) IS NOT NULL