PDA

Просмотр полной версии : UPDATE в mysql


Micr0b
21.09.2007, 12:00
Нехотелось создавать тему, вопрос маленький =\

Мне нужно зделать выборку с упдейтом. Тоись занести в БД обновленые даные..

Проблема такова когда делаю запрос:

UPDATE `table` SET ...... WHERE ips='$ip';

то тогда обновляюця в БД столбцы где есть одинаковые айпи..

Мне нужно зделать одновление по ip и по последньому id
Пробвал зделать так:
UPDATE `table` SET ...... WHERE ips='$ip', max(id);
но ошыбка.. хелп ми))

Joker-jar
21.09.2007, 12:22
UPDATE `table` SET ...... WHERE ips='$ip' and id=(select+max(id)+from+table);

Может как-нибудь так? Хотя наверное можно как то попроще

groundhog
21.09.2007, 12:22
А если сначала сделать:

SELECT MAX(id) FROM some_table WHERE ips='...' GROUP BY ips ORDER BY id ASC
а уже потом:

UPDATE some_table SET ... WHERE id='...'

З.Ы. Джок, если у него четёрка на хосте, сложный запрос не пройдёт.

guest3297
21.09.2007, 12:56
подзапросы рабтают с 4.1 версии.

Micr0b
22.09.2007, 10:33
спасиб! совсем забыл о подзапросах.. спс

xMash
22.09.2007, 12:13
а так:
UPDATE table SET ...... WHERE ips='$ip' ORDER BY id DESC LIMIT 1

xMash
23.09.2007, 11:39
…или, даже лучше, так:

UPDATE table SET ...... WHERE ips=last_insert_id()

fucker"ok
23.09.2007, 15:25
UPDATE `table` SET ...... WHERE ips='$ip', id=max(id);

groundhog
24.09.2007, 09:46
... WHERE ips='$ip', id=max(id);
fucker"ok, разве такая конструкция доспустима? Выражения условий должны объединяться логическими операторам (OR, AND EXISTS, etc.)

xMash
24.09.2007, 09:58
fucker"ok, разве такая конструкция доспустима? Выражения условий должны объединяться логическими операторам (OR, AND EXISTS, etc.)

тем более что об этом говорится в первом посте