Mysql
 sql >> база данни >  >> RDS >> Mysql

Функцията за създаване на MySQL няма да върне набори

MySQL функция може да не върне ред или набор от редове в MySQL. Само съхранена процедура може да върне редове. Това е вярно до и включително MySQL 5.4. Вижте Ограниченията страница. Използването на съхранени процедури като таблици или стойности на клаузи където в заявките също е недостъпно.

Най-доброто, което можете да направите, ако трябва да използвате функция, е да използвате GROUP_CONCAT, за да получите стойностите в разделен със запетая списък:

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

След това във вашия оператор select, който трябва да провери uid, можете да използвате функцията FIND_IN_SET по следния начин:

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

P.S. Първоначално бях публикувал връзки към функциите GROUP_CONCAT и FIND_IN_SET на уебсайта на MySQL, но Stack Overflow ми позволи да използвам само една връзка. Браво, че си нов.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оптимизиране на MySQL ORDER BY на изчисление, споделено с WHERE

  2. MySQL Integer 0 срещу NULL

  3. Как да отрежа водещия и задния цитат от MySQL ред?

  4. Как да се свържа с MySQL на Amazon EC2 от Windows?

  5. Може ли Android да се свърже директно с MySQL без PHP?