Предостережение: этот список не будет использоваться в блоке гнезда, поэтому если вам нужно больше этих значений, он не будет работать как есть.
SELECT CASE WHEN random() > 0.5 THEN 'republican' ELSE 'democrat' END AS party
FROM generate_series(1, 10) AS g(i)
Выводит что-то вроде следующего:
party
------------
democrat
republican
republican
democrat
democrat
democrat
republican
republican
democrat
republican
Ваш последний оператор обновления будет выглядеть следующим образом.
UPDATE table_name
SET registered_party = (
SELECT CASE WHEN random() > 0.5 THEN 'republican' ELSE 'democrat' END
WHERE table_name.id = table_name.id
);
Вам нужно предложение WHERE
в подвыборке. В противном случае он выберет либо «демократа», либо «республиканца», а затем назначит каждую запись в таблице этой партии. Вы хотите, чтобы каждая строка была или-или.