Сформировать запрос с условием - MySQL
Формулировка задачи:
Имеется таблица, в который есть данные. структура следующая: id NOT NULL PRIMARY KEY AI, id_user NOT NULL, id_companion .
Если id_companion инициализирована, то значит, что есть такая же запись в текущей таблице, только поля поменялись местами с id_user. (две симметричные записи)
Внимание, вопрос: как написать запрос, чтобы при условии непустой id_companion - удалить обе записи, иначе только исходную.
Конечно можно выполнить в два запроса с проверкой. Но можно ли написать один запрос с такой зависимостью?
Решение задачи: «Сформировать запрос с условием»
textual
Листинг программы
DELETE FROM <table_name> WHERE id = <id> OR id = ( SELECT id FROM <table_name> WHERE id_user IS NOT NULL AND id_user = ( SELECT id_companion FROM <table_name> WHERE id = <id> ) )
Объяснение кода листинга программы
DELETE FROM <table_name>— команда удаления записей из таблицы.<table_name>— название таблицы, из которой удаляются записи.WHERE— ключевое слово, вводящее условие для удаления записей.id = <id>— условие для удаления записей с определенным значением поляid.(SELECT id FROM <table_name> WHERE id_user IS NOT NULL AND id_user = (SELECT id_companion FROM <table_name> WHERE id = <id>))— вложенный запрос, который возвращает значение поляidдля записи, у которой полеid_userне равно null и полеid_companionравно значению поляidтекущей записи.id = (SELECT id FROM <table_name> WHERE id_user IS NOT NULL AND id_user = (SELECT id_companion FROM <table_name> WHERE id = <id>))— условие для удаления записей, у которых полеidравно значению поляidзаписи, у которой полеid_userне равно null и полеid_companionравно значению поляidтекущей записи.<id>— значение поляid, для которого выполняется запрос на удаление записей.(SELECT id_companion FROM <table_name> WHERE id = <id>)— вложенный запрос, который возвращает значение поляid_companionдля записи, у которой полеidравно значению поляidтекущей записи.<id_user>— значение поляid_user, для которого выполняется запрос на удаление записей.<id_companion>— значение поляid_companion, для которого выполняется запрос на удаление записей.