복붙노트

[SQL] 여러 값을 FIND_IN_SET

SQL

여러 값을 FIND_IN_SET

나는 데이터베이스 필드에서 여러 값을 검색합니다. 아래에있는 내 쿼리입니다.

SELECT * FROM `tablename` 
WHERE FIND_IN_SET('12,13,15,15',category_id) 

내가 검색 방법은 나를 위해 작동하지 않습니다.

해결법

  1. ==============================

    1.FIND_IN_SET는 ()는 쉼표로 구분 된 목록에서 하나의 값을 검색 할 수 있습니다, 그것은 두 목록 작동하지 않습니다.

    FIND_IN_SET는 ()는 쉼표로 구분 된 목록에서 하나의 값을 검색 할 수 있습니다, 그것은 두 목록 작동하지 않습니다.

    각 값을 개별적으로 호출해야합니다.

    SELECT * FROM tablename
    WHERE FIND_IN_SET('12', category_id) OR FIND_IN_SET('13', category_id) OR FIND_IN_SET('15', category_id)
    

    대신 쉼표로 구분 된 목록을 사용하는 스키마를 정상화하면 좋을 것입니다. 당신이 범주 ID로 대다 테이블을 작성하는 경우, 당신은 할 수 있습니다 :

    SELECT t1.*
    FROM tablename AS t1
    JOIN item_categories AS c ON t1.id = c.table_id
    WHERE c.category_id IN (12, 13, 15)
    
  2. from https://stackoverflow.com/questions/51335920/find-in-set-with-multiple-value by cc-by-sa and MIT license