sql >> Base de Datos >  >> RDS >> Mysql

La función de creación de MySQL no devolverá conjuntos

Es posible que una función de MySQL no devuelva una fila o un conjunto de filas en MySQL. Solo un procedimiento almacenado puede devolver filas. Esto es cierto hasta e incluyendo MySQL 5.4. Consulte las Limitaciones página. El uso de procedimientos almacenados como tablas o valores de cláusulas where en consultas tampoco está disponible.

Lo mejor que puede hacer si necesita usar una función es usar GROUP_CONCAT para obtener los valores en una lista separada por comas:

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

Luego, en su declaración de selección que necesita verificar los uid, puede usar la función FIND_IN_SET de esta manera:

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

PD Originalmente había publicado enlaces a las funciones GROUP_CONCAT y FIND_IN_SET en el sitio web de MySQL, pero Stack Overflow solo me permitía usar un enlace. Bien por ser nuevo.