Een MySQL-functie retourneert mogelijk geen rij of reeks rijen in MySQL. Alleen een opgeslagen procedure kan rijen retourneren. Dit geldt tot en met MySQL 5.4. Zie de Beperkingen bladzijde. Gebruik van opgeslagen procedures als tabellen of waar clausulewaarden in query's ook niet beschikbaar zijn.
Het beste wat u kunt doen als u een functie moet gebruiken, is door GROUP_CONCAT te gebruiken om de waarden in een door komma's gescheiden lijst te krijgen:
CREATE FUNCTION getuids() RETURNS VARCHAR(1024)
BEGIN
SELECT GROUP_CONCAT(uid SEPARATOR ',') INTO @uid_list FROM pages WHERE deleted = 0;
RETURN @uid_list;
END
Vervolgens kunt u in uw select-statement dat de uids moet controleren de functie FIND_IN_SET als volgt gebruiken:
SELECT ... WHERE FIND_IN_SET(my_field, get_uids());
PS Ik had oorspronkelijk links naar de GROUP_CONCAT- en FIND_IN_SET-functies op de MySQL-website geplaatst, maar met Stack Overflow kon ik maar één link gebruiken. Yay omdat je nieuw bent.