SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.02.2011 12:33:52

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Обновить поле только у одной записи

Здравствуйте... У мея есть таблица

tb
-------------------------
id  count  cat
1   0       3
1   0       3
2   0       3
3   0       3
3   0       3

Каким запросом можно обновить поле count только у одной записи с id=1 и id=3.

update `tb` SET `count`=1 WHERE cat=3;
  group by не работает

т.е получить следующий результат:
tb
-------------------------
id  count  cat
1   1       3
1   0       3
2   1       3
3   1       3
3   0       3

записей очень много ...

Отредактированно Марк (06.02.2011 12:35:20)

Неактивен

 

#2 06.02.2011 14:27:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Обновить поле только у одной записи

Одним запросом — никак (т.к. у Вас строчки вообще ничем не отличаются).
Делайте SELECT DISTINCT id, а потом кучка маленьких запросов с LIMIT 1.

Неактивен

 

#3 06.02.2011 15:24:55

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Обновить поле только у одной записи

На самом деле в таблице есть ещё индекс, выглядит это примерно так:
tb
-------------------------
id  id_x  count  cat
1   1      0       3
1   2      0       3
2   3      0       3
3   4      0       3
3   5      0       3
4   3      0       3
4   4      0       3
может быть это поможет?

Отредактированно Марк (06.02.2011 15:26:59)

Неактивен

 

#4 06.02.2011 15:38:11

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Обновить поле только у одной записи

Тогда можете при группировке выбирать MIN(id_x), а потом уже
присоединять основную таблицу. Как-нибудь так:
UPDATE tablename t, (SELECT id, MIN(id_x) AS id_x FROM tablename GROUP BY 1) s
SET t.count = 1
WHERE t.id = s.id AND t.id_x = s.id_x;

Неактивен

 

#5 06.02.2011 16:12:34

Марк
Активист
Зарегистрирован: 31.05.2010
Сообщений: 157

Re: Обновить поле только у одной записи

Спасибо

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson