Обновить несколько столбцов с одним и тем же случайным значением в запросе - PullRequest
0 голосов
/ 25 ноября 2018

Этот запрос SQL

UPDATE post
SET random = FLOOR( 1 + RAND( ) *15 ),
    value = FLOOR( 1 + RAND( ) *15 )

возвращает два разных значения для столбцов 'random' и 'value'.

Возможно ли обновить два столбца в одном запросес одинаковым случайным значением?

1 Ответ

0 голосов
/ 25 ноября 2018

Зачем вам два столбца для хранения одного и того же случайного значения?Одного столбца должно быть достаточно!

Однако MySQL допускает следующее не-SQL-совместимое со стандартом поведение :

Если вы обращаетесь к столбцу изтаблица, которая будет обновлена ​​в выражении, UPDATE использует текущее значение столбца.Например, следующий оператор устанавливает col1 на единицу больше, чем его текущее значение:

UPDATE t1 SET col1 = col1 + 1;

Второе назначение в следующем операторе устанавливает col2 текущее (обновленное) значение col1, а не исходное значение col1.В результате col1 и col2 имеют одинаковое значение.Это поведение отличается от стандартного SQL.

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

Итак, вы можете попробовать следующее:

UPDATE post
SET random = FLOOR( 1 + RAND( ) *15 ),
    value = random 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...