Jeżeli dana kolumna jest null to pobierz inną

0

W tabeli mam dwie kolumny date_created i date_modified. Pobieram najnowszy stan dla danego ID. Problem w tym, że potrzebuję zrobić coś takiego, że gdy komórka date_modified as date jest pusta (null) to chciałbym aby mysql pobrał komórkę date_created as date w jaki sposób to zrobić? Czy coś takiego jak poniżej przejdzie?

SELECT `subject_to_order`.`subject_id`, IF(date_modified IS NOT NULL,max(date_modified),max(date_created)) as maxDate FROM `subject_to_order` GROUP BY `subject_id`

Później chcę tego selecta wrzucić w inner join i w zależności od tego czy jest null czy nie to zrobić sto.date_modified = sto_md.MaxDate lub sto.date_created = sto_md.MaxDate, ale to już mi nie idzie bo nie wiem jak tu wpleść warunek.

2

Spróbuj wykorzystać

Select IFNULL(date_modified,date_created)

0
SELECT `sto`.`subject_id`, `sto`.`subject_status_id`, IFNULL(sto.date_modified,sto.date_created)
FROM `subject_to_order` AS `sto`
INNER JOIN
  (SELECT `subject_id`, IFNULL(max(date_modified),max(date_created)) AS maxDate
   FROM `subject_to_order`
   GROUP BY `subject_id`
   ) AS `sto_md` 
ON `sto`.`subject_id` = `sto_md`.`subject_id`
AND IFNULL(`sto`.`date_modified`,`sto`.`date_created`) = `sto_md`.`MaxDate`
WHERE (`sto`.`deleted` != 1)

Hmm, wykombinowałem coś takiego. Wygląda na to, że na peirwszy rzut oka działa.

2

jest jeszcze COALESCE w standardzie sql-92

0

Świetnie, dzieki Panowie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1