Đối với điều này, bạn có thể sử dụng UNION ALL cùng với WHERE NOT EXISTS và triển khai NOT IN để bỏ qua các giá trị đã có trong bảng. Sử dụng SELECT với UNION ALL để thêm các giá trị chưa có trong bảng.
Đầu tiên chúng ta hãy tạo một bảng -
mysql> tạo bảng DemoTable1918 (Giá trị int NOT NULL AUTO_INCREMENT PRIMARY KEY); Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây)
Chèn một số bản ghi vào bảng bằng lệnh chèn -
mysql> chèn vào các giá trị DemoTable1918 (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào các giá trị DemoTable1918 (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào các giá trị DemoTable1918 (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào các giá trị DemoTable1918 (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây) mysql> chèn vào các giá trị DemoTable1918 (); Truy vấn OK, 1 hàng bị ảnh hưởng (0,00 giây)Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -
mysql> select * from DemoTable1918;Điều này sẽ tạo ra kết quả sau -
+ ------- + | Giá trị | + ------- + | 1 || 2 || 3 || 4 || 5 | + ------- + 5 hàng trong bộ (0,00 giây)Đây là truy vấn để CHỌN các giá trị không có trong bảng với UNION ALL -
mysql> select tbl.Value from (chọn 6 làm Value union tất cả chọn 7 union tất cả chọn 8) tbl nơi không tồn tại (chọn 1 từ DemoTable1918 tbl1 trong đó tbl1.Value =tbl.Value);Điều này sẽ tạo ra kết quả sau -
+ ------- + | Giá trị | + ------- + | 6 || 7 || 8 | + ------- + 3 hàng trong bộ (0,00 giây)