2013-01-03 2 views
-1

어떤 방법 으로든 필드 값 (쉼표로 구분)을 배열이나 임시 테이블에 가져올 수 있습니다.배열에 쉼표로 구분 된 필드 값을 가진 MYSQL 쿼리

예 : 나는 PHP를 사용하거나 임시 테이블에없는 값 3,7,23,45

난 배열에 그들을 얻을 원하는 필드 following 있습니다.

이러한 값을 기반으로 몇 가지 공동 쿼리를 수행해야합니다.

도움이

감사

내 테이블 이름은 감사 : 내가 검색 할 때 필드 이름이

샘플 테이블 값 따르고 신발, 지금이

 
    +----------+-----------+ 

    userId   following 
    +----------+-----------+ 
    1   5,7,8,12 
    2   5,2,1,67 

처럼 userId 1, 배열 또는 임시 테이블 값을 5,7,8,12 얻고 싶습니다.

+1

http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/ –

+0

테이블 구조 추가하기 샘플 입력 된 출력 데이터가 있습니다 –

+0

고마워요.하지만 배열/임시 테이블에 저장하고 싶습니다. 더 많은 작업을 수행해야하므로 화면에 표시되지 않습니다. – Jhansi

답변

0

특히 빠르지는 않지만 가능합니다. 가장 좋은 해결책은 쉼표로 구분 된 목록을 쉼표로 구분 된 각 요소에 대해 한 행씩 다른 테이블로 이동하도록 데이터베이스를 다시 설계하는 것입니다.

그러나 SQL 방법을 원한다면 다음과 같은 일을 할 것입니다 (이것은 i라는 단일 열이있는 정수라고 불리는 테이블을 가지며 0에서 9까지의 값을 가진 10 개의 행을 사용합니다).

SELECT DISTINCT shoes.userId , substring_index(substring_index(shoes.FollowingIdString, ',', anInt), ',', -1) AS SplitField 
FROM shoes, 
(SELECT a.i+b.i*10+c.i*100 AS anInt 
FROM integers a, integers b, integers c) Sub1 
HAVING SplitField IS NOT NULL 
0

당신은 여러 열이있는 테이블 PersonList은을 한 가정이 당신이 추종자 목록의 이름을 얻기 위해 가입 할 테이블입니다. 예

PersonTable

FIND_IN_SET라는 MySQL의 함수가
ID Name 
1 AAA 
2 BBB 

SELECT a.userID, GROUP_CONCAT(b.Name) 
FROM Follower a 
     INNER JOIN Person b 
     ON FIND_IN_SET(b.id, a.following) > 0 
GROUP BY a.userID 
관련 문제