Funkcja MySQL może nie zwracać wiersza lub zestawu wierszy w MySQL. Tylko procedura składowana może zwracać wiersze. Odnosi się to do MySQL 5.4 włącznie. Zobacz Ograniczenia strona. Użycie procedur składowanych jako tabel lub w przypadku, gdy wartości klauzul w zapytaniach są również niedostępne.
Najlepsze, co możesz zrobić, jeśli potrzebujesz użyć funkcji, to użyć GROUP_CONCAT, aby umieścić wartości na liście oddzielonej przecinkami:
CREATE FUNCTION getuids() RETURNS VARCHAR(1024)
BEGIN
SELECT GROUP_CONCAT(uid SEPARATOR ',') INTO @uid_list FROM pages WHERE deleted = 0;
RETURN @uid_list;
END
Następnie w instrukcji select, która wymaga sprawdzenia identyfikatorów UID, możesz użyć funkcji ZNAJDŹ_IN_SET w następujący sposób:
SELECT ... WHERE FIND_IN_SET(my_field, get_uids());
PS Pierwotnie zamieściłem linki do funkcji GROUP_CONCAT i FIND_IN_SET na stronie MySQL, ale Stack Overflow pozwoliłby mi użyć tylko jednego linku. Yay za bycie nowym.