sql >> Database >  >> RDS >> Mysql

Splits een MYSQL-tekenreeks van GROUP_CONCAT in een ( array, like, expression, list) die IN () kan begrijpen

In plaats van IN() . te gebruiken , zou FIND_IN_SET() . gebruiken ook een optie zijn?

http://dev.mysql .com/doc/refman/5.0/en/string-functions.html#function_find-in-set

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
    -> 2

Hier is een volledig voorbeeld gebaseerd op het voorbeeldprobleem in de vraag, bevestigd zoals getest door de vrager in een eerdere bewerking van de vraag:

SELECT name FROM person LEFT JOIN tag ON person.id = tag.person_id GROUP BY person.id 
  HAVING ( FIND_IN_SET(1, GROUP_CONCAT(tag.tag_id)) ) AND ( FIND_IN_SET(2, GROUP_CONCAT(tag.tag_id)) );
+------+
| name |
+------+
| Bob  |
+------+


  1. laravel 5.6 bulksgewijs invoegen van json-gegevens

  2. Items in de bootstrap-vervolgkeuzelijst invoegen vanuit de SQL-tabel

  3. Database:gepipelinede functies

  4. Een databasemodel vanaf nul maken