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