Смотрите, есть таблица с метатегами: вопрос стало быть такой, можно ли как нибудь в одном запросе организовать следующее: если метки (с таким названием) нет, добавить метку (ну id автоматически, название и счетчик на 1), а если есть, то инкрементировать счетчик у существующей записи. Вопрос можно ли это организовать одним запросом? Суть вопроса, ну может такое возможно (хотя я сомневаюсь), и все это делают, а я не знаю как такое сделать, непорядок.
~ Код (Text): INSERT INTO table (meta_id,meta_name,meta_count) VALUES (1,2,3) ON DUPLICATE KEY UPDATE meta_count=meta_count+1;
Спасибо за ответ, почитал в интернете, там написано что подобная конструкция работает только для уникальных полей (свойств).
Что вас в этом смутило? Хотябы одно поле должно быть уникальным ключём, он в вашей таблице наврняка есть.
А вот сейчас не понял Вообще меня в большей мере интересовал такой запрос (один запрос) который делал бы что то типа: т.е. что то типа if else в запросе. Но как я понимаю я как обычно не правильно поставил задачу. а насчет не понял, допустим meta_name у меня НЕ уникальный, что тогда делать? А насчет смущения, ни чего не смутило, я просто когда возникает какой то вопрос задаю его в первую очередь поисковику и очень часто находятся темы на разных форумах, где как раз такой же как у меня вопрос, там обсуждений много, а когда дело доходит до решения, то мы видим ответ типа "Всем спасибо! проблема решена!", а вот как он ее решил конечно же он не пишет, вот я и решил по максимуму оставить информацию, что бы если кто то будет искать..
Запрос из примера смотрит на уникальные ключи таблицы. Обычно это поле primary key, какой-нибудь id. Если же в таблице есть ещё одно поле с типом unic то у вас 2 ключа то при этом запросом с ON DUPLICATE KEY UPDATE будет изменена всёравно только одна строка. Тоесть применения запросов с N DUPLICATE KEY UPDATE с "multiple unique indexes" нужно избегать. Отвечая на ваш запрос: Если строка существует, выполнить INSERT или UPDATE или SELECT, если не существует то выполнить INSERT, UPDATE, SELECT одним запросом - нет нельзя. Эта концструкция позволяет вам создать запись или изменить существуюшую при совпадении ключа и только.