Как проверить запись на существование и добавить ее в базу данных если ее там нет или отредактировать если она там есть? - MySQL
Формулировка задачи:
INSERT INTO AdvancedAccess VALUES('BlackBurn','removed@mail.ru','3884e9a59a96c3969c3b18d3cea442c4','1','2018-05-31 15:08:09') WHERE ((SELECT COUNT(*) FROM AdvancedAccess WHERE (((Login = 'BlackBurn') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4') = 0) OR UPDATE AdvancedAccess SET Login = 'BlackBurn',Email = 'removed@mail.ru',ID = '3884e9a59a96c3969c3b18d3cea442c4',AdvOpenSource = '1',DateAccess = '2018-05-30 15:08:09' WHERE (((Login = 'BlackBurn') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4') UNION INSERT INTO AdvancedAccess VALUES('Login','removed@mail.ru','3884e9a59a96c3969c3b18d3cea442c4','1','2018-05-31 15:08:09') WHERE ((SELECT COUNT(*) FROM AdvancedAccess WHERE (((Login = 'Login') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4') = 0) OR UPDATE AdvancedAccess SET Login = 'Login',Email = 'removed@mail.ru',ID = '3884e9a59a96c3969c3b18d3cea442c4',AdvOpenSource = '1',DateAccess = '2018-05-31 15:08:09' WHERE ((Login = 'Login') OR (EMail = 'removed@mail.ru') AND ID = '3884e9a59a96c3969c3b18d3cea442c4')
(SELECT COUNT(*) FROM AdvancedAccess WHERE (((Login = 'BlackBurn') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4')
Вернее вот так:
INSERT INTO AdvancedAccess VALUES('BlackBurn','removed@mail.ru','3884e9a59a96c3969c3b18d3cea442c4','1','2018-05-31 15:08:09') WHERE (SELECT COUNT(*) FROM AdvancedAccess WHERE (((Login = 'BlackBurn') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4') = 0) OR UPDATE AdvancedAccess SET Login = 'BlackBurn',Email = 'removed@mail.ru',ID = '3884e9a59a96c3969c3b18d3cea442c4',AdvOpenSource = '1',DateAccess = '2018-05-30 15:08:09' WHERE (((Login = 'BlackBurn') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4') UNION INSERT INTO AdvancedAccess VALUES('Login','removed@mail.ru','3884e9a59a96c3969c3b18d3cea442c4','1','2018-05-31 15:08:09') WHERE (SELECT COUNT(*) FROM AdvancedAccess WHERE (((Login = 'Login') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4') = 0) OR UPDATE AdvancedAccess SET Login = 'Login',Email = 'removed@mail.ru',ID = '3884e9a59a96c3969c3b18d3cea442c4',AdvOpenSource = '1',DateAccess = '2018-05-31 15:08:09' WHERE (((Login = 'Login') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4')
и вот так:
SELECT COUNT(*) FROM AdvancedAccess WHERE (((Login = 'BlackBurn') OR (EMail = 'removed@mail.ru')) AND ID = '3884e9a59a96c3969c3b18d3cea442c4')
Решение задачи: «Как проверить запись на существование и добавить ее в базу данных если ее там нет или отредактировать если она там есть?»
textual
Листинг программы
SELECT IIF ( (SELECT COUNT(*) FROM `USERS` WHERE (((Login = 'Login') OR (Email = 'test@mail.ru')) AND STATUS = 'ACTIVATED'))=1, (INSERT INTO AdvancedAccess (Login,Email,ID,AdvOpenSource,DateAccess) VALUES ('Login','test@mail.ru','3884e9a59a96c3969c3b18d3cea442c4','2','2019-05-12 21:48:35') ON DUPLICATE KEY UPDATE Login = VALUES(Login),Email = VALUES(Email),ID = VALUES(ID), AdvOpenSource = VALUES(AdvOpenSource),DateAccess = VALUES(DateAccess)), 'FALSE' ) AS RESULT;
Объяснение кода листинга программы
- Сначала выполняется запрос SELECT с функцией IIF. Функция IIF проверяет, равно ли количество записей в таблице
USERS
, удовлетворяющих условию(((Login = 'Login') OR (Email = 'test@mail.ru')) AND STATUS = 'ACTIVATED')
), единице. - Если условие в функции IIF выполняется, то выполняется оператор INSERT, который добавляет новую запись в таблицу
AdvancedAccess
со значениями 'Login', 'test@mail.ru', '3884e9a59a96c3969c3b18d3cea442c4', '2', '2019-05-12 21:48:35' для полей Login, Email, ID, AdvOpenSource и DateAccess соответственно. - Если условие в функции IIF не выполняется, то оператор ON DUPLICATE KEY UPDATE не выполняется, и в таблицу
AdvancedAccess
ничего не добавляется или не обновляется. - В конце запроса возвращается значение 'FALSE' в качестве результата.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д