Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL DELETE FROM с подзаявка като условие

За други, които смятат, че този въпрос иска да изтрие, докато използват подзаявка, ви оставям този пример за надхитряване на MySQL (дори ако някои хора изглежда смятат, че не може да се направи):

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM tableE
             WHERE arg = 1 AND foo = 'bar');

ще ви даде грешка:

ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause

Въпреки това, тази заявка:

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM (SELECT id
                   FROM tableE
                   WHERE arg = 1 AND foo = 'bar') x);

ще работи добре:

Query OK, 1 row affected (3.91 sec)

Увийте подзаявката си в допълнителна подзаявка (тук наречена x) и MySQL с радост ще направи това, което поискате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на изгледи на MySQL

  2. Незаконен микс от съпоставяне (utf8_unicode_ci,IMPLICIT) и (utf8_general_ci,IMPLICIT) за операция '='

  3. Как да вмъкна в същата таблица в MySQL?

  4. Как да предоставим разрешения за отдалечен достъп до mysql сървър за потребител?

  5. Примери за UTC_TIME – MySQL