Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - Bỏ qua truy vấn nếu bảng không tồn tại

Tôi phải đồng ý rằng yêu cầu của bạn có vẻ khá kỳ quặc. Dù sao, truy vấn của bạn không hoạt động, bởi vì MySQL (và tôi cá là tất cả các DBMS khác) trước tiên đánh giá truy vấn để kiểm tra lỗi cú pháp, v.v. và đối với các bảng hiện có.

Bạn chỉ cần thực hiện nhiều truy vấn này trong mã ứng dụng của mình hoặc bạn tạo một thủ tục được lưu trữ để lấy dữ liệu bằng cách sử dụng các câu lệnh đã chuẩn bị. Mã cho điều này sẽ giống như sau:

DELIMITER $$
CREATE PROCEDURE get_my_data()
BEGIN
SET @table_name = '';
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE SCHEMA_NAME = 'your_db_name' 
           AND TABLE_NAME = 'your_table_name')
THEN SET @table_name = 'tableA';
ELSE SET @table_name = 'tableB';
END IF;

SET @sql = CONCAT('SELECT COUNT(*) FROM ', @table_name, ';');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END $$
DELIMITER ;

Sau khi tạo, bạn sẽ thực hiện thủ tục với

CALL get_my_data();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các cột char / varchar / text / longtext trong MySQL có chiếm kích thước đầy đủ trong hệ thống tệp ngay cả đối với các ô được lấp đầy một phần không?

  2. PHP - MySQL - Xóa hàng

  3. LỖI 1118 (42000) Kích thước hàng quá lớn

  4. Tham số số 2 không phải là tham số OUT

  5. Truy vấn SQL dường như không hoạt động