







|
MySQL.RU - Webboard
Вернуться
Проблема с UPDATE (omickron) 29/05/2010 - 21:48:53
Re: Проблема с UPDATE (bac) 30/05/2010 - 09:09:05
Re: Проблема с UPDATE (omickron) 30/05/2010 - 09:41:16
Re: Проблема с UPDATE (Igorok) 31/05/2010 - 12:32:22
> Original message text:
> From: omickron - 29/05/2010 - 21:48:53
> Subject:Проблема с UPDATE
> -----------------
> День добрый.
> Ребят, выручайте.
>
> Имеется таблица
> CREATE TABLE `tb` (
> `ID` int(11) NOT NULL auto_increment,
> `aa` int(11) default NULL,
> PRIMARY KEY (`ID`)
> ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251
>
> Т.е. в ней всего два поля: уникальный ID и какие-то данные.
> Моя задача - обменять две строки друг с другом данными при сохранении ID.
>
> Допустим, в таблице две строки: (ID,aa): (1,1) и (2,2).
> Мне нужно сделать (1,2) и (2,1);
>
> Запрос
> UPDATE tb t1, tb t2
> SET t1.aa=t2.aa, t2.aa=t1.aa
> WHERE t1.ID=1 AND t2.ID=2;
> приводит к тому, что я получаю (1,2) и (2,2).
>
> Как мне добиться нужного результата?
>
>
From: omickron - 30/05/2010 - 09:41:16
Subject:Проблема с UPDATE
-----------------
bac, я привёл простой запрос. В моём случае меняется не одна строка, а сразу несколько.
Т.е. есть строки, у которых aa<5 и есть строки, у которых аа>5. Мне нужно, чтоб строки из первой группы получили aa>5, а из второй группы aa<5.
Т.е. одной переменной тут не обойдёшься.
Вот пример:
ID aa
1 5
2 6
3 8
4 9
Мой запрос выглядит так:
UPDATE tb t1, tb t2
SET t1.aa=t1.aa-3, t2.aa=t2.aa+3
WHERE t1.aa>7 AND t2.aa<7
Число 3 я вычисляю заранее, в отдельном запросе.
И проблема в том, что сервер обновляет строки по одному условию, а потом не находит строк по другому условию.
И, что интересно, на моём локальном сервере обновление проходит правильно. Т.е.
UPDATE tb t1, tb t2
SET t1.aa=t2.aa, t2.aa=t1.aa
WHERE t1.ID=1 AND t2.ID=2;
меняет две строки.
А вот на сервере хоста - нет. Только одну.
HELP :)
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
37156
|
|