복붙노트

[SQL] 여러 테이블에서 행을 삭제 MYSQL

SQL

여러 테이블에서 행을 삭제 MYSQL

이 할 수있는 올바른 방법이 있나요?

DELETE t1, t2, t3, t4 FROM 
  table1 as t1 
  INNER JOIN  table2 as t2 on t1.id = t2.id
  INNER JOIN  table3 as t3 on t1.id=t3.id
  INNER JOIN  table4 as t4 on t1.id=t4.id
  WHERE  t1.username='%s' AND t1.id='%s'

해결법

  1. ==============================

    1.네, 맞습니다. 그것은 여기에 잘 작동합니다 :

    네, 맞습니다. 그것은 여기에 잘 작동합니다 :

    CREATE TABLE table1 (id int, username nvarchar(30));
    CREATE TABLE table2 (id int);
    CREATE TABLE table3 (id int);
    CREATE TABLE table4 (id int);
    
    INSERT INTO table1 VALUES (1, 'Foo'),(2, 'Bar');
    INSERT INTO table2 VALUES (1),(2);
    INSERT INTO table3 VALUES (1),(2);
    INSERT INTO table4 VALUES (1),(2);
    
    SELECT COUNT(*) FROM table1;
    2
    SELECT COUNT(*) FROM table2;
    2
    SELECT COUNT(*) FROM table3;
    2
    SELECT COUNT(*) FROM table4;
    2
    
    DELETE t1, t2, t3, t4 FROM
      table1 as t1
      INNER JOIN  table2 as t2 on t1.id = t2.id
      INNER JOIN  table3 as t3 on t1.id=t3.id
      INNER JOIN  table4 as t4 on t1.id=t4.id
      WHERE  t1.username='Foo' AND t1.id='1';
    
    SELECT COUNT(*) FROM table1;
    1
    SELECT COUNT(*) FROM table2;
    1
    SELECT COUNT(*) FROM table3;
    1
    SELECT COUNT(*) FROM table4;
    1
    

    당신을 위해 작동하지 않는 경우, 아마 당신은 당신이 가지고있는 무슨 문제를 보여주기 위해이 예제를 수정할 수 있습니다.

  2. ==============================

    2.그것을 파악하는 쉬운 방법은 쿼리로 처음 쓰기 여기에 있습니다 :

    그것을 파악하는 쉬운 방법은 쿼리로 처음 쓰기 여기에 있습니다 :

    SELECT * FROM 
            table1 as t1 
            INNER JOIN  table2 as t2 on t1.id = t2.id
            INNER JOIN  table3 as t3 on t1.id=t3.id
            INNER JOIN  table4 as t4 on t1.id=t4.id
            WHERE  t1.username='%s' AND t1.id='%s'
    

    당신은 당신이 기대하는 결과를 얻을, 그냥 삭제 및 테이블 이름으로 ** * 표시 선택을 교체합니다. 그 다음이 될 것입니다 :

    Delete t1, t2, t3, t4 From table1 as t1 
            INNER JOIN  table2 as t2 on t1.id = t2.id
            INNER JOIN  table3 as t3 on t1.id=t3.id
            INNER JOIN  table4 as t4 on t1.id=t4.id
            WHERE  t1.username='%s' AND t1.id='%s'
    
  3. ==============================

    3.와 간단합니다 :

    와 간단합니다 :

    DELETE FROM `Table1` t1, `Table2` t2 USING t1, t2
    WHERE t1.`id` =  t2.`id` AND t1.`id` = 10; <br>
    

    즐겨 :)

  4. from https://stackoverflow.com/questions/2214433/mysql-delete-row-from-multiple-tables by cc-by-sa and MIT license