これがインプレースソリューションです(ただし、ワンライナーではありません)
最大IDを確認する:
select max(id) as maxid
from shop;
この値を覚えておいてください。 1000に等しいとしましょう;
オフセットを使用して、一意の値を再挿入します:
insert into shop (id, tax_id)
select distinct id + 1000, tax_id
from shop;
古い値を削除する:
delete from shop
where id <= 1000;
通常のIDを復元する:
update shop
set id = id - 1000;
利益!