Изменение повторяющихся значений sql
Есть таблица с данными, допустим вот так:
ID | IMG
1 | 1
2 | 1
3 | 2
4 | 2
5 | 2
6 | 3
Задача стоит в том, что бы изменить все повторяющиеся значение на 0, но при этом оставить самое первое неизменным.
Т.е. в итоге должно получиться вот так:
ID | IMG
1 | 1
2 | 0
3 | 2
4 | 0
5 | 0
6 | 3
Уже пол дня сижу с этой проблемой и никак не могу понять как составить запрос
Ответы (2 шт):
Автор решения: Miron
→ Ссылка
UPDATE t1 SET
img = 0
WHERE
id in (
SELECT * FROM (
SELECT
_all.id
FROM
(
SELECT
MIN(id) as id, img
FROM
t1
GROUP BY img
) as firsts,
t1 as _all
WHERE
_all.img = firsts.img
AND
_all.id != firsts.id) as t);
Автор решения: Alex R.
→ Ссылка
Можно было проще
update t1 set
img = 0
where id not in
(select
min(t1.id)
from t1
group by t1.img)