Как использовать динамическое значение столбца таблицы в значении другого столбца на INSERT
Я делаю что-то вроде ниже..
INSERT INTO example_table
(start_time,
start_time_type,
end_time,
end_time_type,
duration)
SELECT IF(start_time_type = 'now'
OR start_time < " . CURRENT_TIME . ", " . CURRENT_TIME . ",
start_time),
start_time_type,
IF(list_in = 'store', 0, ( IF(end_time_type = 'duration',
" . CURRENT_TIME . " + duration * 86400,
end_time
) )),
IF(list_in = 'store', '', 'duration'),
IF(list_in = 'store', end_time - start_time / 86400, duration)
FROM bulk_listings
WHERE .....
Теперь, как вы можете видеть, я хочу поработать над полученным значением start_time
а также end_time
; однако очевидно, что приведенный ниже код не будет работать, так как он будет работать с текущим значением столбца, который я предполагаю, и не будет использовать результирующее значение, которое я хочу.
Есть ли способ сделать то, что я хочу?
1 ответ
Решение
Вам нужно создать подзапрос с вашими столбцами вычисленных значений:
SELECT start_time, start_time_type, end_time,
IF(list_in = 'store', '', 'duration'),
IF(list_in = 'store', end_time - start_time / 86400, duration)
FROM (SELECT IF(start_time_type = 'now'
OR start_time < " . CURRENT_TIME . ", " . CURRENT_TIME . ",
start_time) AS start_time,
start_time_type,
IF(list_in = 'store', 0, ( IF(end_time_type = 'duration',
" . CURRENT_TIME . " + duration * 86400,
end_time
) )) AS end_time,
duration,
list_in
FROM bulk_listings
WHERE ...) AS SUBQUERY