MySQL delete row from multiple tables

后端 未结 3 1029
借酒劲吻你
借酒劲吻你 2020-12-01 17:46

Is this the correct way to do it?

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         


        
相关标签:
3条回答
  • 2020-12-01 18:02

    An easy way to figure it out is to first write it as a query:

    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'
    

    If you get the results you expect, just replace the *Select ** with Delete and your table names. Then it would become:

    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'
    
    0 讨论(0)
  • 2020-12-01 18:03

    Yes, that is correct. It works fine here:

    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
    

    If it's not working for you, perhaps you can modify this example to show what problem you are having.

    0 讨论(0)
  • 2020-12-01 18:03

    Make it simple with:

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

    Enjoy :)

    0 讨论(0)
提交回复
热议问题