github.com/matrixorigin/matrixone@v1.2.0/test/distributed/cases/dml/delete/delete_multiple_table.sql (about)

     1  -- @suit
     2  
     3  -- @case
     4  -- @desc:test for DELETE for multiple table
     5  -- @label:bvt
     6  
     7  DROP TABLE IF EXISTS t1;
     8  DROP TABLE IF EXISTS t2;
     9  DROP TABLE IF EXISTS t3;
    10  DROP TABLE IF EXISTS t4;
    11  
    12  CREATE TABLE t1(
    13                     id VARCHAR(10) PRIMARY KEY,
    14                     name VARCHAR(20)
    15  );
    16  CREATE TABLE t2(
    17                     id VARCHAR(10),
    18                     sex VARCHAR(4)
    19  );
    20  CREATE TABLE t3(
    21                     name VARCHAR(20),
    22                     score INT
    23  );
    24  CREATE TABLE t4(
    25                     id VARCHAR(10),
    26                     class VARCHAR(10)
    27  );
    28  
    29  INSERT INTO t1 VALUES('1','pet'), ('2','cat'), ('3','dog'), ('4','pig');
    30  INSERT INTO t2 VALUES('1','M'), ('2','F'), ('4','F'), ('6',NULL);
    31  INSERT INTO t3 VALUES('pet',101), ('dog',202), ('pig',303), ('dokey',505);
    32  INSERT INTO t4 VALUES('2','c2'), ('4','c4'), ('6','c5'), ('7','c1');
    33  SELECT * FROM t1;
    34  DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;
    35  SELECT * FROM t1;
    36  SELECT * FROM t2;
    37  DELETE t2 FROM t2 LEFT JOIN t1 ON t2.id = t1.id WHERE t2.sex = 'NULL';
    38  SELECT * FROM t2;
    39  DELETE t2 FROM t2 LEFT JOIN t1 ON t2.id = t1.id WHERE t2.sex = '';
    40  SELECT * FROM t2;
    41  SELECT * FROM t4;
    42  DELETE t4 FROM t4 INNER JOIN t1 ON t4.id = t1.id WHERE t4.id BETWEEN 1 AND 3;
    43  SELECT * FROM t4;
    44  SELECT * FROM t3;
    45  DELETE t3 FROM t3 RIGHT JOIN t1 ON t1.name = t3.name WHERE t3.score < 202;
    46  SELECT * FROM t3;
    47  DELETE t1,t2 FROM t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t1.id = 25;
    48  DELETE t1,t2 FROM t1,t2 WHERE t1.id = t2.id AND t1.id = 25;
    49  DELETE t1 FROM t1,t2 WHERE t1.id = t2.id AND t1.id = 25;
    50  DELETE t2 FROM t1,t2 WHERE t1.id = t2.id AND t1.id = 25;
    51  DELETE t2 FROM t1,t2,t3 WHERE t1.id = t2.id OR t1.name = t3.name AND t1.id = 25;
    52  DELETE t2 FROM t1,t2,t3,t4 WHERE t1.id = t2.id AND t1.id = t4.id AND t1.id = 25;
    53  SELECT * FROM t2;
    54  
    55  -- Whether support USING keyword
    56  DELETE FROM t1 USING t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;
    57  SELECT * FROM t1;
    58  DELETE FROM t3 USING t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;
    59  
    60  -- Alias
    61  DELETE t1,t2 FROM table_name AS t1 LEFT JOIN table2_name AS t2 ON t1.id = t2.id WHERE table_name.id = 25;
    62  
    63  DROP TABLE IF EXISTS t1;
    64  DROP TABLE IF EXISTS t2;
    65  DROP TABLE IF EXISTS t3;
    66  DROP TABLE IF EXISTS t4;
    67  
    68  CREATE TABLE t1(
    69                     t1_id INT NOT NULL PRIMARY KEY,
    70                     t1_o INT
    71  );
    72  CREATE TABLE t2(
    73                     t2_id INT NOT NULL PRIMARY KEY,
    74                     t1_id INT,
    75                     t2_o INT
    76  );
    77  CREATE TABLE t3(
    78                     t3_id INT NOT NULL PRIMARY KEY,
    79                     t2_id INT,
    80                     t3_o INT
    81  );
    82  
    83  INSERT INTO t1 VALUES(111,2), (222,3), (333,4);
    84  INSERT INTO t2 VALUES(444,111,23), (555,222,34), (666,7,45);
    85  INSERT INTO t3 VALUES(777,444,86), (888,666,56), (999,46,31);
    86  SELECT * FROM t3;
    87  DELETE t3 FROM t1 INNER JOIN t2 ON t1.t1_id = t2.t1_id INNER JOIN t3 ON t2.t2_id = t3.t3_id WHERE t1.t1_id = 222;
    88  SELECT * FROM t3;
    89  DELETE t1,t2,t3 FROM t1 INNER JOIN t2 ON t1.t1_id = t2.t1_id INNER JOIN t3 ON t2.t2_id = t3.t2_id WHERE t1.t1_id = 111;
    90  SELECT * FROM t1;
    91  SELECT * FROM t2;
    92  SELECT * FROM t3;
    93  -- Delete result is 0 rows affected on MO.
    94  DELETE t1,t2,t3 FROM t1 LEFT JOIN t2 ON t1.t1_id = t2.t1_id RIGHT JOIN t3 ON t3.t2_id = t2.t2_id WHERE t2.t2_id = 555;
    95  -- Delete result is 0 rows affected on MO.
    96  DELETE t1,t2,t3 FROM t1 RIGHT JOIN t2 ON t1.t1_id = t2.t1_id RIGHT JOIN t3 ON t3.t2_id = t2.t2_id WHERE t2.t2_id = 555;
    97  
    98  -- @bvt:issue#5219
    99  DELETE t1,t2,t3 FROM t1 RIGHT JOIN t2 ON t1.t1_id = t2.t1_id LEFT JOIN t3 ON t3.t2_id = t2.t2_id WHERE t2.t2_id = 555;
   100  DELETE t1,t2,t3 FROM t1 LEFT JOIN t2 ON t1.t1_id = t2.t1_id LEFT JOIN t3 ON t3.t2_id = t2.t2_id WHERE t2.t2_id = 555;
   101  -- @bvt:issue
   102  
   103  DROP TABLE IF EXISTS t1;
   104  DROP TABLE IF EXISTS t2;
   105  DROP TABLE IF EXISTS t3;
   106  
   107  CREATE TABLE t1(
   108                     a INT NOT NULL PRIMARY KEY,
   109                     b DATE,
   110                     c DATETIME
   111  );
   112  CREATE TABLE t2(
   113                     a INT NOT NULL PRIMARY KEY,
   114                     b INT
   115  );
   116  CREATE TABLE t3(
   117                     a VARCHAR(10) NOT NULL PRIMARY KEY,
   118                     b FLOAT
   119  );
   120  CREATE TABLE t4(
   121                     a CHAR(10) NOT NULL PRIMARY KEY,
   122                     b DOUBLE
   123  );
   124  CREATE TABLE t5(
   125                     a DOUBLE NOT NULL PRIMARY KEY,
   126                     b SMALLINT
   127  );
   128  
   129  INSERT INTO t1 VALUES (1,'2020-06-01','2023-04-05 13:16:46'), (2,'2019-04-19','2021-08-04 16:18:32'),(4,'2028-04-19','2021-08-04 16:18:32');
   130  INSERT INTO t2 VALUES (1,897),(3,7984),(4,4894);
   131  INSERT INTO t3 VALUES (3,0.001),(4,9.666),(5,46.321);
   132  INSERT INTO t4 VALUES (3,123.11),(4,6464),(9,3641);
   133  INSERT INTO t5 VALUES (4,153),(313,1561);
   134  
   135  DELETE t1,t2,t3,t4,t5
   136  FROM t1
   137  INNER JOIN t2 ON t1.a = t2.a
   138  INNER JOIN t3 ON t2.a = t3.a
   139  INNER JOIN t4 ON t3.a = t4.a
   140  INNER JOIN t5 ON t4.a = t5.a
   141  WHERE t1.a = 1;
   142  
   143  DELETE t1,t2 FROM t1,t2 WHERE t1.a = t2.a AND t1.a = 1;
   144  SELECT * FROM t1;
   145  SELECT * FROM t2;
   146  
   147  DELETE t1,t5 FROM t1,t5 WHERE t1.a = t5.a AND t1.a = 4;
   148  SELECT * FROM t1;
   149  SELECT * FROM t5;
   150  
   151  DROP TABLE IF EXISTS t1;
   152  DROP TABLE IF EXISTS t2;
   153  DROP TABLE IF EXISTS t3;
   154  DROP TABLE IF EXISTS t4;
   155  DROP TABLE IF EXISTS t5;
   156  CREATE TABLE temp(
   157      id INT NOT NULL PRIMARY KEY
   158  );
   159  CREATE TABLE t1(
   160                     id INT NOT NULL PRIMARY KEY,
   161                     name VARCHAR(20)
   162  );
   163  INSERT INTO temp VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
   164  INSERT INTO t1 VALUES(1,'likk'),(2,'fire'),(3,'wikky');
   165  
   166  DELETE t1 FROM t1,(SELECT * FROM temp LIMIT 5) AS t WHERE t1.id = t.id AND t1.id > 2;
   167  SELECT * FROM t1;
   168  
   169  DROP TABLE IF EXISTS t1;
   170  DROP TABLE IF EXISTS temp;
   171