2016-12-21 2 views
1

У меня есть два ниже SQL-запроса. Они отлично работают индивидуально с одним и тем же скриптом php. Будет ли преимущество в сочетании их эффективности? Если да, то как это делается. Часть COALESCE меня озадачила, так как я хочу, чтобы этот столбец обновлялся только один раз.Объединение операторов SQL

$sql_update = "INSERT INTO mobile_update(cust_id, last_name, first_name, dob) VALUES('$cust_id', '$last_name', '$first_name', '$dob') ON DUPLICATE KEY UPDATE last_name = '$last_name', first_name = '$first_name', dob = '$dob';"; 
$sql_initial_entry = "UPDATE mobile_update set initial_entry = COALESCE(initial_entry, NOW()) where cust_id = '$cust_id';"; 
+1

Почему не значение по умолчанию? – jarlh

ответ

1

$ sql_initial_entry содержит оператор обновления, который только изменяет значения в существующей строке (сделано в предыдущем заявлении). Я не вижу возможности «комбинировать» эти запросы. Я думаю, что единственная стратегия, которая жизнеспособна является установить initial_entry (seemd быть даты/времени) в качестве колонки автоинкремент - как

ALTER TABLE `mobile_update' 
CHANGE COLUMN `initial_entry` `initial_entry` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP; 

От: SQL Auto-Increment by DateTime

Таким образом, вы просто передать нуль в оператор insert, и он заполнит текущую временную метку. Coalesce просто обрабатывает нули с альтернативным значением. Разрешить nulls, если вы ожидаете их.

Смежные вопросы