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

Hàm tạo MySQL sẽ không trả về các bộ

Một hàm MySQL có thể không trả về một hàng hoặc tập hợp các hàng trong MySQL. Chỉ một thủ tục được lưu trữ mới có thể trả về các hàng. Điều này đúng cho đến và bao gồm cả MySQL 5.4. Xem Hạn chế trang. Việc sử dụng các thủ tục được lưu trữ dưới dạng bảng hoặc trong đó giá trị mệnh đề trong các truy vấn cũng không khả dụng.

Về điều tốt nhất bạn có thể làm nếu cần sử dụng một hàm là sử dụng GROUP_CONCAT để đưa các giá trị vào danh sách được phân tách bằng dấu phẩy:

CREATE FUNCTION getuids() RETURNS VARCHAR(1024)
BEGIN
SELECT GROUP_CONCAT(uid SEPARATOR ',') INTO @uid_list FROM pages WHERE deleted = 0;
RETURN @uid_list;
END

Sau đó, trong câu lệnh đã chọn của bạn cần kiểm tra các nắp, bạn có thể sử dụng hàm FIND_IN_SET như sau:

SELECT ... WHERE FIND_IN_SET(my_field, get_uids());

P.S. Ban đầu tôi đã đăng các liên kết đến các hàm GROUP_CONCAT và FIND_IN_SET trên trang web MySQL, nhưng Stack Overflow sẽ chỉ cho phép tôi sử dụng một liên kết. Yay vì là người mới.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận tổng số hàng khi sử dụng LIMIT?

  2. Chỉ mục tổng hợp MySQL và toán tử GIỮA

  3. Làm cách nào để kết nối với nhiều cơ sở dữ liệu trong một trang PHP?

  4. Di chuyển db Laravel - lỗi đổi tênColumn - Đã yêu cầu loại cơ sở dữ liệu không xác định

  5. Sử dụng biểu thức chính quy để xác thực các câu lệnh mysql