Я пытаюсь обновить несколько столбцов в случае, если одно новое значение меньше, чем старый:MySQL: Обновление нескольких столбцов в IF заявлении
INSERT INTO `toptimes`.`$enc` (serial,name,time,date,tag) VALUES ('$serial','$name','$time','$date','$tag') ON DUPLICATE KEY UPDATE IF(`time` > '$time',(`time` = '$time',`name`='$name'));
Здесь возникает проблема, мне нужно сделать это так :
ON DUPLICATE KEY UPDATE IF(`time` > '$time',(`time` = '$time',`name`='$name'));
Таким образом, если новое значение $time
ниже старого time
, обновить 2 колонки: обновление time
, а также обновить name
столбец, но если случай не соответствует, не обновлять ничего. Как я могу заставить его работать?
Спасибо.
Проблема заключается в том, что выбирает наибольшее значение, когда он должен выбрать наименьшую один, и имя по-прежнему не обновляется, так как я его переделал: INSERT INTO 'toptimes'.' $ enc' (серийный номер, имя, время, дата, тег) VALUES ('$ serial', '$ name', '$ time', ' $ date ',' $ tag ') ON DUPLICATE KEY UPDATE time = LEAST (' $ time ', 'time'), name = (CASE КОГДА время
Gallardo994
@ Gallardo994. , , 'VALUES (time)' - значение * new * времени, которое будет вставлено, что эквивалентно '$ time' в вашем случае. 'VALUES()' имеет несколько преимуществ, в том числе вы можете вставлять сразу несколько строк одновременно. –
Есть ли другой способ формулировки SQL-операторов, чтобы избежать повторения логики? – ahnbizcad