sql >> Database >  >> RDS >> Mysql

MySQL-aanmaakfunctie retourneert geen sets

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.




  1. Haal MAX waarde uit de ene kolom en MIN uit een andere kolom

  2. Efficiënt extern roosteren met MySQL en ejabberd

  3. MySQL:als ik een functie in SQL-query meer dan één keer gebruik, wordt deze dan elke keer opnieuw berekend?

  4. Retourdatum als ddmmjjjj in SQL Server