2011-12-01 2 views
0

두 개의 검색 값, AB과 결과가 Result 인 테이블 ABR이 있습니다. 나는 결과가 A의 일부 값, AB와일드 카드를 사용하여 MySQL에서 가장 특정한 행 선택

을 부여하지만, 반환 할 열 B 와일드 카드가 될 수 있습니다. 이 경우 가장 구체적인 행이 필요합니다.

나는하지만 MySQL의 문을 알아낼 수없는 것 - 나는 하나 찾았지만, 그것은 더 나은 방법이 있어야합니다, 긴 7 줄을이었고, 5 =IF 년대했다.

A B Result 
1 * First 
2 * Second 
2 1 Third 
2 2 Fourth 
3 * Fifth 

Example wanted results: 
A=1, B=5 -> First 
A=1, B=0 -> First 
A=2, B=2 -> Fourth 
A=2, B=4 -> Second 
A=3, B=7 -> Fifth 

열 값이 나중에 변경 될 수 있습니다. A와 B에 대한 추가 행을 추가하거나 값을 제거 할 수 있습니다. SQL에서 하드 코딩하는 것은 허용되지 않습니다.

답변

0
SELECT Result 
    FROM ABR 
    WHERE A = @LookupA 
     AND (B = @LookupB OR B = '*') 
    ORDER BY B DESC LIMIT 1; 
+0

예, 가능합니다. 하지만이 테이블에 다른 조인 시리즈에 참여하고 ORDER-BY-LIMIT-1은 이미 가지고있는 GROUP-BY를 버릴 것입니다. 아니면 하위 쿼리에이 값을 넣고 하위 쿼리 결과에 조인해야합니까? – Konerak

+0

@Konerak : 서브 쿼리가 작동하는 것처럼 들립니다. 당신은 그것을 시험해보고해야 할 것입니다. –

관련 문제