2017-01-06 3 views
0

나는 테이블처럼이 :동적 mysql을 선택 stament

+-----------------------------+ 
| ID | ID_CONV | NAME | DATA | 
| 1 | 1 | ALEX | DATA1 | 
| 2 | 1 | ALEX | DATA2 | 
| 3 | 2 | ALEX | DATA3 | 
| 4 | 2 | ALEX | DATA4 | 
| 5 | 3 | NIKO | DATA5 | 
| 6 | 4 | ALEX | DATA6 | 
| 7 | 4 | ALEX | DATA7 | 
| 8 | 3 | NIKO | DATA8 | 
+-----------------------------+ 

내가하지만 최대 ID_CONV,이 같은 일부와 알렉스의 데이터를 선택합니다 : 현재

+-----------------------------+ 
| ID | ID_CONV | NAME | DATA | 
| 6 | 4 | ALEX | DATA6 | 
| 7 | 4 | ALEX | DATA7 | 
+-----------------------------+ 

, 할 즉, 나는 Alex Alex의 ID_CONV를 요청해야하며,이 ID_CONV를 사용하여 데이터를 선택해야합니다. (여기

SELECT t.* 
FROM your_table t 
INNER JOIN 
    (SELECT name, MAX(id_conv) id_conv FROM your_table GROUP BY name 
) t2 
ON t.name  = t2.name 
AND t.id_conv = t2.id_conv 
WHERE t.name = 'ALEX'; 

는 하나입니다 : 가능하다이 당신은 각각의 이름을 id_conv의 최대를 찾아이 같은 기본 테이블로 가입 할 수 있습니다

답변

3

상담보다 효율적 경우

내 질문은 느린)의 상관 관계 쿼리

SELECT * 
FROM your_table t 
WHERE t.name = 'ALEX' 
AND id_conv IN 
    (SELECT MAX(id_conv) id_conv FROM your_table t2 WHERE t2.name = t.name 
) ; 
+0

고마워요, 완벽하게 작동합니다. –

-1

이 시도 :

SELECT ID , MAX(ID_CONV) , NAME , DATA 
    FROM MyTable 
WHERE NAME = 'ALEX' 
+1

이것은 정확히 수행하지 않을 내용입니다. – Strawberry

+0

@Strawberry : 왜냐하면 ... – FDavidov

+0

글쎄, 먼저 해보고, 그러면 문제의 일부를 좀 더 자세히 살릴 수 있습니다. – Strawberry