sql >> Databáze >  >> RDS >> Mysql

rozdíl mezi where_in a find_in_set

WHERE IN vyžaduje, aby byla sada hodnot v dotazu uvedena doslovně, nikoli jako jedna hodnota obsahující řetězec oddělený čárkami. Pokud napíšete:

WHERE 6 IN (a.allowed_activity)

bude zpracovávat a.allowed_activity jako jedinou hodnotu a porovnejte ji s 6 , nikoli jako soubor více hodnot k vyhledávání.

FIND_IN_SET hledá hodnotu v řetězci odděleném čárkami.

Dalším způsobem, jak jej zobrazit, je IN je zkratka pro spoustu = testy kombinované s OR :

WHERE x IN (a, b, c, d)

je zkratka pro

WHERE x = a OR x = b OR x = c OR x = d

Když to přepíšete takto, můžete jasně vidět, proč to nebude fungovat se sloupcem obsahujícím řetězec oddělený čárkami. Jednoduše překládá

WHERE 6 IN (a.allowed_activity) 

komu:

WHERE 6 = a.allowed_activity


  1. Jak mohu získat seznam všech funkcí uložených v databázi konkrétního schématu v PostgreSQL?

  2. připojte se k databázi mysql pomocí knihovny phpseclib

  3. MySQL - jak zobrazit nejnovější téma na vlákno

  4. Připojení zdrojového kódu PHP a odeslání formuláře do databáze MySQL