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

Wartości wiążące PDO dla instrukcji MySQL IN

To jest to samo, co zostało zadane w tym pytaniu:Czy mogę powiązać tablicę z warunkiem IN()?

Odpowiedź była taka, dla listy o zmiennej wielkości w in klauzula, musisz samodzielnie skonstruować zapytanie.

Jednak możesz użyć cytowanej listy oddzielonej przecinkami, używając find_in_set , chociaż w przypadku dużych zestawów danych miałoby to znaczny wpływ na wydajność, ponieważ każda wartość w tabeli musi być rzutowana na typ char.

Na przykład:

select users.id
from users
join products
on products.user_id = users.id
where find_in_set(cast(products.id as char), :products)

Lub, jako trzecia opcja, możesz utworzyć funkcję zdefiniowaną przez użytkownika, która podzieli listę oddzieloną przecinkami (por. http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated-string-ids / ). Jest to prawdopodobnie najlepsza opcja z tych trzech, zwłaszcza jeśli masz wiele zapytań, które opierają się na in(...) klauzule.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zwrócić kolumny liczb całkowitych i liczbowych z MySQL jako liczby całkowite i numeryczne w PHP?

  2. Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:TAK) - Brak uprawnień?

  3. MySQL, zaktualizuj wiele tabel za pomocą jednego zapytania

  4. MySQL 'user_id', w którym klauzula jest niejednoznacznym problemem

  5. Jak utworzyć procedurę składowaną w MySQL?