powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли зделать ето одним запросом, без использования SP ?
10 сообщений из 10, страница 1 из 1
Можно ли зделать ето одним запросом, без использования SP ?
    #32770104
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!!!
Можно ли зделать ето одним запросом, без использования SP ?

чтото на подобии етого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 

IF(
(SELECT F1 FROM TTest WHERE F1= 1  AND F2= 15 ) IS NULL,

(INSERT INTO TTest(F1,F2,F3)VALUES( 1 , 15 , 222 )),

(UPDATE TTest SET F3= 222  WHERE F1= 1  AND F2= 15 )

);
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32770489
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
INSERT INTO TTest(F1,F2,F3)       
VALUES( 1 , 15 , 222 )
ON DUPLICATE KEY UPDATE F3= 222 

Где F1 и F2 - PK или UI

Если вы указываете ON DUPLICATE KEY UPDATE (новшество в MySQL 4.1.0), и производится вставка строки, которая вызывает ошибку дублирующегося первичного (PRIMARY) или уникального (UNIQUE) ключа, то вполняется UPDATE старой строки
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32770497
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще

Код: plaintext
1.
2.
REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        VALUES (expression,...),(...),...

Оператор REPLACE работает точно так же, как INSERT, за исключением того, что если старая запись в данной таблице имеет то же значение индекса UNIQUE или PRIMARY KEY, что и новая, то старая запись перед занесением новой будет удалена
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32771795
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО БОЛЬШОЕ!!!
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32772433
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если я использую
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE TTest(
    F1 BIGINT NOT NULL auto_increment ,   
    F2 BIGINT NOT NULL,
    F3 BIGINT NOT NULL,
   PRIMARY KEY(F1,F2) 
) TYPE=InnoDB;

INSERT INTO TTest(F1,F2,F3)       
VALUES(NULL, 15 , 222 )
ON DUPLICATE KEY UPDATE F3= 222 

и после выполнения запроса мне нужно взять сгенерированое F1.

А когда выполнилось условие ON DUPLICATE KEY то LAST_INSERT_ID() не подходит :(

И что опять же таки придется делать еще один запрос ? :(
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32773422
kulpavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а replace пробовали?
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32773639
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Okramи после выполнения запроса мне нужно взять сгенерированое F1.
А когда выполнилось условие ON DUPLICATE KEY то LAST_INSERT_ID() не подходит :(разумеется, ведь нового ид не генерилось, какой же такой сгенерённый ид тебе нужен?
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32775461
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kulpavelа replace пробовали?
там ключ F1 будет пересоздан, а мне надо чтобы если такое поле там есть то ничего с ним не делать, а только возвратить F1



maXmoразумеется, ведь нового ид не генерилось, какой же такой сгенерённый ид тебе нужен?

Я ето знаю, но возможно ли ето както обойти

например, чтото етого ???
Код: plaintext
1.
2.
3.
4.
SET @rF1= 0 ;
INSERT INTO TTest(F1,F2,F3)       
VALUES(NULL, 15 , 222 )
ON DUPLICATE KEY UPDATE F3= 222  , @rF1=F1
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32776351
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разве переменными можно прямо в запросе пользоваться?

ma X mo
...
Рейтинг: 0 / 0
Можно ли зделать ето одним запросом, без использования SP ?
    #32779677
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так я же и спрашиваю, можно ли чтото в етом роде зделать.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли зделать ето одним запросом, без использования SP ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]