SQL IFNULL с условием и записью CSV
У меня есть таблица с нулевыми значениями и типы данных для всех столбцов являются целыми / действительными. Я хотел бы написать "нет данных", если поле является нулевым при записи данных в CSV.
Вот таблица испытаний.
id test1 test2 test3
------ ------ ------ ------
1 1 2 3
2 5 6
3 7 9
4 11 12
Я хотел бы отображать "строку" только в столбце test1, где идентификатор равен 2. Мой оператор SQL
SELECT id, (ifnull(test1, 'string')) as test1, test2, test3 from testTable;
и это производит это.
id test1 test2 test3
------ ------ ------ ------
1 1 2 3
2 string 5 6
3 7 9
4 string 11 12
Есть ли способ поставить условие условие для ifnull или есть другой способ создания этой финальной таблицы?
Мой желаемый финальный тестовый стол.
id test1 test2 test3
------ ------ ------ ------
1 1 2 3
2 string 5 6
3 7 9
4 11 12
Спасибо.
2 ответа
Это также может быть сделано с помощью оператора CASE, который может быть чище и быстрее, если есть большие объемы данных.
SELECT id,
CASE WHEN test1 IS NULL AND id = 2 THEN 'string' ELSE test1 END,
test2,
test3
from testTable;
Вы можете использовать коррелированный подзапрос и извлекать 'string' только когда id равен 2:
SELECT id, ifnull(test1,
(select 'string' from testTable tt
where tt.id =2 and testTable.id = tt.id)) as test1,
test2, test3
from testTable;