sql >> Databasteknik >  >> RDS >> Mysql

MySQL create-funktionen returnerar inte set

En MySQL-funktion kanske inte returnerar en rad eller uppsättning rader i MySQL. Endast en lagrad procedur kan returnera rader. Detta gäller fram till och med MySQL 5.4. Se Begränsningar sida. Användning av lagrade procedurer som tabeller eller där klausulvärden i frågor inte heller är tillgängliga.

Det bästa du kan göra om du behöver använda en funktion är att använda GROUP_CONCAT för att få in värdena i en kommaseparerad lista:

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

Sedan kan du använda FIND_IN_SET-funktionen så här i din select-sats som behöver kontrollera uids:

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

P.S. Jag hade ursprungligen lagt upp länkar till funktionerna GROUP_CONCAT och FIND_IN_SET på MySQL-webbplatsen, men Stack Overflow lät mig bara använda en länk. Yay för att vara ny.




  1. Hur man skapar en användare med PSQL

  2. Node.js ansluter via ssh

  3. JSON_MERGE_PATCH() – Utför en RFC 7396-kompatibel sammanslagning av JSON-dokument i MySQL

  4. hur man infogar arabiska i mysql från asp.net C#