Update значений через IF

evshi

Новичок
В таблице есть 2 поля: dt (когда добавили фирму), udt (когда обновляли данные фирмы).

dt заполнено у всех фирм. udt только у тех, которые обновляли. Мне надо выводить фирмы с сортировкой по dt или udt, в зависимости от того, что старше.

Если я пишу так "... ORDER BY `udt` DESC, `dt` DESC", то пропускаются фирмы, недавно добавленные (сортировка идет только по обновленным).

Чтобы этого избежать, решил взять значение dt и добавить его в udt (где Null), а потом уже делать сортировку ORDER BY `udt` DESC (только по udt).

Хочется сделать обновление одним запросом. Возможно ли это?

Попытался вот так:
[SQL]
SELECT IF(
`udt` IS NULL, UPDATE `firm` SET `udt`=`dt`, 0
)
FROM `firm`
[/SQL]

Но так ругается. Как поправить запрос?
 

Mols

Новичок
SELECT * , IF(`udt`, `udt`,`dt`) AS order_date FROM `firm` ORDER BY order_date DESC

Ну или сначала выполнить обновление просто запросом.

UPDATE `firm` SET `udt`= `dt` WHERE `udt` IS NULL

А потом простой селект с сортировкой по `udt`

З.Ы.
Учитывая через какое место Вы пытались это сделать, возьмите книжку по СКЛ и поработайте с примерами немного.
 

evshi

Новичок
SELECT * , IF(`udt`, `udt`,`dt`) AS order_date FROM `firm` ORDER BY order_date DESC

Ну или сначала выполнить обновление просто запросом.

UPDATE `firm` SET `udt`= `dt` WHERE `udt` IS NULL

А потом простой селект с сортировкой по `udt`

З.Ы.
Учитывая через какое место Вы пытались это сделать, возьмите книжку по СКЛ и поработайте с примерами немного.
Спасибо!
 
Сверху