Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Fungsi pembuatan MySQL tidak akan mengembalikan set

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. File kunci MySQL salah untuk tabel tmp saat membuat banyak gabungan

  2. Akses ke tabel tertentu dalam tag html

  3. PDO::FETCH_ASSOC tidak mengambil semuanya

  4. MySql - PADA DUPLICATE KEY INSERT

  5. Server WAMP berwarna hijau tetapi hanya mendapatkan 404