[MySQL] insert или update - одним запросом

uncle17


update table set field1++ where field2=_тому-то_

если field2=_этому_тому-то_ не существует, то

insert into table (field1, field2) values (field1=1 , field2=_этому_тому-то_)

как одним запросом? Туплю с утра.
Проще говоря, голосовалку пишу

artimon

IMHO, никак. UPDATE и INSERT это разные операции.

uncle17

ясно... тоже не нашел...
Если бы можно было как-то получать _все_ значения radio button с одним именем скриптом, было бы тоже легче.
Хочется написать скрипт, который бы работал без моего вмешательства, т.е. редакторы бы только редактировали для каждой новой голосовалки вопрос и варианты ответа в html, а сам код не трогался.

uncle17

в общем, хотелось, как в файловой системе. Если файл есть, открывается для записи. Если нет - создается и открывается

stm7884696

Update ....
if (mysql_uffected_rows <1 ) Insert .....
Чего сложного то ? Все тривиально...

artimon

Это не один запрос.

rosali

я бы написал

insert ignore ... (0, ...);
update ...

тоже не один запрос, зато без if-ов этих дурацких

gopnik1994

напиши ХП

uncle17

каво?

stm7884696

Это не один запрос.
Да ты что, правда?
ИМХО - Самый простой способ.
Тем более, что за Х уникальных инсертов запрос станет один (Х = кол-ву вариантов голосования)
А если хочешь реально один запрос- задай изначально все варианты по 0 голосов в каждом...

uncle17

задай изначально все варианты по 0 голосов в каждом
так и пришлось в итоге

Marinavo_0507

В Mysql есть REPLACE INTO.

rosali

А что он дает? replace это тот же insert, только иногда поверх старой записи. Как с его помощью сделать x=x+1, это же "update-ное" действие?

Dasar

как-нибудь так:

replace x=notnull(select x + 1, 1)

rosali

В MySQL нет подзапросов Уж по крайней мере в 3.с-чем-то.

Dasar

тогда - да - это проблема
Оставить комментарий
Имя или ник:
Комментарий: