MySQL: удалить все записи на основе идентификатора и другого содержимого столбцов - PullRequest
0 голосов
/ 18 февраля 2020

Я получил следующую таблицу

+----+---------+---------+
| id |  val1   |  val2   |
+----+---------+---------+
|  1 |  aaaa   |  bbbb   |
|  2 |  cccc   |  dddd   |
|  3 |  aaaa   |  eeee   |
|  4 |  ffff   |  bbbb   |
|  5 |  aaaa   |  bbbb   |
+----+---------+---------+

Я указал, что мне нужно удалить запись с id = 1

Но я также хочу удалить все записи, имеющие такие же значения val1 и val2, как id 1.

В этом случае также должен быть удален идентификатор 5.

Я пытался это без удачи

SELECT id FROM table t1
INNER JOIN table t2
ON t1.val1 = t2.val1
AND t1.val2 = t2.val2
AND t1.id = 1

Ответы [ 2 ]

2 голосов
/ 18 февраля 2020

вы можете использовать подзапрос

delete t
from table t
inner join  (
  select val1, val2
  from table 
  where id = 1 
) s on s.val1 = t.val1 
      and s.val2 = t.val2 
0 голосов
/ 18 февраля 2020

Это можно сделать с помощью самостоятельного соединения и условия id = 1 в предложении WHERE:

delete t1  
from tablename t1 inner join tablename t2
on t1.val1 = t2.val1 and t1.val2 = t2.val2
where t2.id = 1;

См. Демонстрационную версию . Результаты:

| id  | val1 | val2 |
| --- | ---- | ---- |
| 2   | cccc | dddd |
| 3   | aaaa | eeee |
| 4   | ffff | bbbb |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...