Fungsi MySQL mungkin tidak mengembalikan baris atau set baris di MySQL. Hanya prosedur tersimpan yang dapat mengembalikan baris. Ini berlaku hingga dan termasuk MySQL 5.4. Lihat Batasan halaman. Penggunaan prosedur tersimpan sebagai tabel atau di mana nilai klausa dalam kueri juga tidak tersedia.
Hal terbaik yang dapat Anda lakukan jika Anda perlu menggunakan suatu fungsi adalah menggunakan GROUP_CONCAT untuk memasukkan nilai ke dalam daftar yang dipisahkan koma:
CREATE FUNCTION getuids() RETURNS VARCHAR(1024)
BEGIN
SELECT GROUP_CONCAT(uid SEPARATOR ',') INTO @uid_list FROM pages WHERE deleted = 0;
RETURN @uid_list;
END
Kemudian pada pernyataan pilih Anda yang perlu memeriksa uids, Anda dapat menggunakan fungsi FIND_IN_SET seperti ini:
SELECT ... WHERE FIND_IN_SET(my_field, get_uids());
P.S. Saya awalnya memposting tautan ke fungsi GROUP_CONCAT dan FIND_IN_SET di situs web MySQL, tetapi Stack Overflow hanya mengizinkan saya menggunakan satu tautan. Yay karena baru.