Сформировать запрос с условием - 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>
        )
    )

Объяснение кода листинга программы

  1. DELETE FROM <table_name> — команда удаления записей из таблицы.
  2. <table_name> — название таблицы, из которой удаляются записи.
  3. WHERE — ключевое слово, вводящее условие для удаления записей.
  4. id = <id> — условие для удаления записей с определенным значением поля id.
  5. (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 текущей записи.
  6. 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 текущей записи.
  7. <id> — значение поля id, для которого выполняется запрос на удаление записей.
  8. (SELECT id_companion FROM <table_name> WHERE id = <id>) — вложенный запрос, который возвращает значение поля id_companion для записи, у которой поле id равно значению поля id текущей записи.
  9. <id_user> — значение поля id_user, для которого выполняется запрос на удаление записей.
  10. <id_companion> — значение поля id_companion, для которого выполняется запрос на удаление записей.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5