Предполагая, что все пары (foo_id, bar_id)
уникальны, а is_primary
ограничен 0 или 1 (т. Е. Никакими другими значениями или NULL), вы можете определить, например, минимальное значение bar_id
для каждого foo_id
значение и установите is_primary
в 1 для соответствующих строк:
UPDATE atable t
INNER JOIN (
SELECT
foo_id,
MIN(bar_id) AS bar_id
FROM atable
GROUP BY foo_id
HAVING MAX(is_primary) = 0
) s ON t.foo_id = s.foo_id AND t.bar_id = s.bar_id
SET t.is_primary = 1