Я думаю, что вы ищете LEAST(current_turn, [xyz]_chips)
. При этом будет использоваться значение чипа, если оно меньше current_turn
, но значение current_turn
, если значение чипа больше этого значения.
То есть, если вы хотите, чтобы точки были равны сумме всех значений чипа, каждое из которых ограничено значением current_turn
, вам нужно что-то вроде этого:
UPDATE score SET points = LEAST(current_turn, red_chips) + LEAST(current_turn, blue_chips) + LEAST(current_turn, green_chips) + LEAST(current_turn, yellow_chips) + LEAST(current_turn, white_chips)
Предполагается, что значения [xyz]_chips
содержат фактическую чистую стоимость (с поправкой на значение каждого цвета). В зависимости от того, что current_turn
представляет относительно значений / цветов микросхем, вы можете умножить их на относительные значения микросхем. Но если вы ищете количество фишек, не обязательно учитывающее цвет, или если столбец [xyz]_chips
содержит скорректированное по цвету значение, то с вами все будет в порядке.
Кроме того, чтобы прояснить немного о моем редактировании, MIN
- это агрегатная функция, которая воздействует на столбцы, находя минимальное значение из строк. LEAST
is принимает два или более аргумента и возвращает аргумент с наименьшим значением (или NULL
, если какой-либо из них NULL
), поэтому он действует на значения каждой отдельной строки.