#mysql #sql #row
#mysql #sql #строка
Вопрос:
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;
У меня есть этот запрос, который выдает мне только одну запись. Это ‘7’ в предложении WHERE является переменной в моем коде.
Я хочу удалить столбцы, которые дают мне нулевые значения.
Этот запрос возвращает:
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 равно другому идентификатору, 1-й, 2-й, 3-й, 4-й показатель может иметь значения.
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
Извините за плохой английский .. <3
Ответ №1:
Используйте COALESCE()
для фильтрации строк, в которых находятся все [X Stat]
столбцы NULL
:
WHERE r.id = 7
AND COALESCE(r.stat01, r.stat02, r.stat03, r.stat04) IS NOT NULL
Комментарии:
1. @KJELYAZKOV Я отредактировал с использованием фактических имен столбцов, как они есть в таблице, а не псевдонимов.
2. да, я знаю, но … (
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 присоедините rune_grade rg к r.grade_id = rg.id внутреннее объединение rune_type rt на r.type_id = rt.id ГДЕ r.id = 7 И COALESCE(r.stat01, r.stat02, r.stat03, r.stat04) НЕ равен нулю;)3. Для r.id = 7 вы не получите никаких результатов, потому что все столбцы равны НУЛЮ. Вы пробовали это для r.id = 6?
4. Нужно ли мне удалять эти столбцы из SELECT выше?
5. Ну, тогда этого не произойдет. Извините, я новичок, я этого не знал. Тем не менее, спасибо.