2014-12-11 2 views
0

Column_1 값이 Column_2 값에 포함되어 있는지 확인해야합니다.LIKE 절을 사용하여 같은 테이블의 두 열을 비교하는 방법은 무엇입니까?

ID | column1 | column2   | 
---------------------------- 
1 | apple  | pear,grape, apple | 
2 | pear  | apple,grape  | 
3 | apple  | apple    | 

는 쿼리 내가 이런 식으로 뭔가를 시도했습니다 1과 3

선 나에게 반환해야하지만, 작동하지 않습니다 : 2 열의 데이터 유형은

SELECT * FROM `table` as C WHERE column_1 LIKE "%C.column_2%" 

답변

1

귀하의 비교는 뒤로입니다. 그것은해야한다 : 즉 적절한 아니라면

5 apple pineapple,grapefruit 

, 당신은 LIKE을 사용해서는 안 :이 같은 행을 돌려 보낼

WHERE column2 LIKE CONCAT('%', column1, '%'); 

참고. FIND_IN_SET는 열 구분 된 목록의 항목과 일치하도록 설계되었습니다, 그래서 당신은 사용할 수 있습니다

WHERE FIND_IN_SET(column1, column2) 

그러나,이 작업을 수행 할 경우 쉼표 주위에 공백이없는 있는지 확인하십시오.

테이블을 표준화하면 훨씬 좋을 것입니다. 쉼표로 구분 된 목록을 사용해서는 안되며, 다 대다 관계 테이블을 사용해야합니다.

+0

위대한 답변! 나는 concat에 대해 생각하지 않았습니다! 이 얼마나 어리석은! 타이! – abaini01

관련 문제