테스트하지,하지만 난 당신에게 요구 사항을 이해한다면 정확하게 당신이 일을 이런 식으로 뭔가에 쿼리를 기반으로 할 수 있어야한다 : 어떤 도움을
홈페이지 표는 다음과 같습니다 감지 할 수 있습니다 : -
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(adj_noun, ',', aCnt + 1), ',', -1), COUNT(*)
FROM Main_Table
INNER JOIN
(
SELECT Units.i + Tends.i * 10 + Hundreds.i * 100 AS aCnt
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Units
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Tens
(SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Hundreds
) Integers_Query
ON aCnt <= (LENGTH(adj_noun) - LENGTH(REPLACE(adj_noun, ',', '')))
GROUP BY id, SUBSTRING_INDEX(SUBSTRING_INDEX(adj_noun, ',', aCnt + 1), ',', -1)
이 숫자 (0 ~ 999)의 범위를 얻을 수있는 하위 쿼리를 사용하고, 숫자보다 작거나 쉼표에 표시되는 시간의 수와 동일 어디 당신의 테이블에 대해이 조인 않습니다 adj_noun 열 (즉, subtrac t adj_noun의 길이에서 모든 쉼표가 제거 된 adj_noun의 길이). 그런 다음 SUBSTRING_INDEX를 사용하여 aCnt 쉼표까지 문자열을 가져온 다음 SUBSTRING_INDEX을 사용하여 해당 쉼표에서 이전 쉼표로 문자열을 가져옵니다 (결과에서 쉼표 제외).
COUNT/GROUP BY는 각 항목의 결과 목록에 각 단어가 나타나는 횟수를 가져와야합니다.
아마도 상당히 비효율적 일 것입니다. 쉼표로 구분 된 1000 개의 단어 만 처리합니다 (쉽게 확장되지만 속도는 느려집니다).
형용사의 목록은 쉼표로 구분 된 단어가있는 문자열입니까, 아니면 각각의 형용사가 별도의 레코드에 속해 있습니까? –
몇 줄의 샘플 데이터를 게시 할 수 있습니까? 나는 생각이있다 :) –
@RaduGheorghiu : 고마워, 형용사를위한 한 칼럼이있다. 각 리뷰마다 쉼표로 구분 된 모든 adjetive 목록이 들어 있습니다. –