Mysql
 sql >> Database >  >> RDS >> Mysql

La funzione di creazione di MySQL non restituirà i set

Una funzione MySQL potrebbe non restituire una riga o un insieme di righe in MySQL. Solo una procedura memorizzata può restituire righe. Questo è vero fino a MySQL 5.4 incluso. Consulta le Limitazioni pagina. Utilizzo di stored procedure come tabelle o dove anche i valori delle clausole nelle query non sono disponibili.

Il meglio che puoi fare se devi usare una funzione è usare GROUP_CONCAT per inserire i valori in un elenco separato da virgole:

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

Quindi nella tua dichiarazione select che deve controllare gli uid, puoi utilizzare la funzione FIND_IN_SET in questo modo:

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

PS Inizialmente avevo pubblicato collegamenti alle funzioni GROUP_CONCAT e FIND_IN_SET sul sito Web MySQL, ma Stack Overflow mi avrebbe consentito di utilizzare solo un collegamento. Sì per essere nuovo.