Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Funkcja tworzenia MySQL nie zwraca zestawów

Funkcja MySQL może nie zwracać wiersza lub zestawu wierszy w MySQL. Tylko procedura składowana może zwracać wiersze. Odnosi się to do MySQL 5.4 włącznie. Zobacz Ograniczenia strona. Użycie procedur składowanych jako tabel lub w przypadku, gdy wartości klauzul w zapytaniach są również niedostępne.

Najlepsze, co możesz zrobić, jeśli potrzebujesz użyć funkcji, to użyć GROUP_CONCAT, aby umieścić wartości na liście oddzielonej przecinkami:

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

Następnie w instrukcji select, która wymaga sprawdzenia identyfikatorów UID, możesz użyć funkcji ZNAJDŹ_IN_SET w następujący sposób:

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

PS Pierwotnie zamieściłem linki do funkcji GROUP_CONCAT i FIND_IN_SET na stronie MySQL, ale Stack Overflow pozwoliłby mi użyć tylko jednego linku. Yay za bycie nowym.




  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 - jak przechowywać czas z prawidłową strefą czasową? (z Javy)

  2. Zwracanie zestawu wyników

  3. Mysql DISTINCT nie działa, jeśli dodam kolejną kolumnę

  4. Wyszukiwanie wielu liczb w polu wielu liczb

  5. Aktualizacja tabeli w wyzwalaczu po aktualizacji na tej samej tabeli