Whatsername
Новичок
MySQL от Поля Дюбуа, 2-е издание
В тестовой базе данных есть таблица president.
В таблице содержатся имена, даты рождения и другая информация о президентах Америки.
У ныне живущих президентов в графе death стоит значение NULL.
Дюбуа пишет:
"Чтобы отсортировать президентов по дате смерти, но при этом поместить живущих президентов ( со значением смерти NULL) в начало списка, используйте:
SELECT * FROM president ORDER BY IF(death IS NULL,0,1), death;
А чтобы поместить живущих президентов в конец списка:
SELECT * FROM president ORDER BY IF(death IS NULL,1,0), death;
В первом случае IF присваивает строкам с пустыми датами смерти значения 0, а строкам с датами смерти - значения 1, тем самым помещая все строки без даты смерти перед строками с датой смерти. Во втором случае все происходит наоборот".
Меня смущает объяснение: где тут "присваивание"? Все ли так на самом деле происходит? При том, что работает правильно!
В тестовой базе данных есть таблица president.
В таблице содержатся имена, даты рождения и другая информация о президентах Америки.
У ныне живущих президентов в графе death стоит значение NULL.
Дюбуа пишет:
"Чтобы отсортировать президентов по дате смерти, но при этом поместить живущих президентов ( со значением смерти NULL) в начало списка, используйте:
SELECT * FROM president ORDER BY IF(death IS NULL,0,1), death;
А чтобы поместить живущих президентов в конец списка:
SELECT * FROM president ORDER BY IF(death IS NULL,1,0), death;
В первом случае IF присваивает строкам с пустыми датами смерти значения 0, а строкам с датами смерти - значения 1, тем самым помещая все строки без даты смерти перед строками с датой смерти. Во втором случае все происходит наоборот".
Меня смущает объяснение: где тут "присваивание"? Все ли так на самом деле происходит? При том, что работает правильно!