Вы можете обновить ровно одну строку, используя ctid
. Таблицы SQL неупорядочены , поэтому «первой» строки не существует, но вы можете ограничить обновление одной строкой:
UPDATE "company" c
SET "salary" = 6
WHERE "name" = 'x' AND "age" = 5 AND "address" = 'x' AND "salary" = 5 AND
ctid = (SELECT ctid
FROM "company" c2
WHERE c2."name" = c."name" and c2."age" = c."age" and c2."address" = c."address" and c2."salary" = c."salary"
ORDER BY ctid
LIMIT 1
);
Тем не менее, я думаю, что вы должны приложить усилия для исправления таблицы, а не пытаться работать с данными, которые только будут вызывать проблемы.