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

MySQL - Sử dụng kết quả thủ tục được lưu trữ để xác định câu lệnh IN

Thủ tục được lưu trữ hiện tại của bạn có kiểu trả về nào? Bạn đang nói về "một danh sách", vậy TEXT?

Có thể có một cách dễ dàng hơn, nhưng một điều bạn có thể làm (bên trong một thủ tục được lưu trữ khác) là tạo một truy vấn khác.

Để làm được điều đó, chúng ta cần khắc phục hai hạn chế của MySQL:a) Để thực thi SQL động bên trong một thủ tục được lưu trữ, nó cần phải là một câu lệnh được chuẩn bị sẵn. b) Chỉ có thể tạo câu lệnh chuẩn bị từ các biến người dùng. Vì vậy, SQL hoàn chỉnh là:

SET @the_list = myStoredProc();
SET @the_query = CONCAT('SELECT * FROM myTable WHERE columnName IN (' , @the_list , ')');
PREPARE the_statement FROM @the_query;
EXECUTE the_statement;

Nếu bạn đang nói về việc trả về một tập hợp kết quả từ một quy trình được lưu trữ và sau đó sử dụng nó dưới dạng bảng, thì điều đó là không thể. Bạn cần tạo một bảng tạm thời để khắc phục hạn chế này .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao truy vấn mysql này (với là kiểm tra null) lại chậm hơn truy vấn khác?

  2. Hộp kết hợp xếp tầng của biểu mẫu Access không hiển thị gì trong menu thả xuống

  3. Cài đặt Sonar trên Ubuntu với mysql

  4. Làm cách nào để xóa các bản ghi trong MySQL và giữ ngày mới nhất

  5. Tại sao không trả về số nguyên PDO_MySQL?