조건

2014-02-15 3 views
0

가 어떻게 다음 SQL을 작성할 수 있습니다 MySQL의에서 CASE가조건

select * from blogimage where blog_id = '1' and orientation = 'h' 

는하지만 ... 추가 ....

IF(and only if) orientation = 'h' is null... then use orientation = 'v' 
+0

'orientation = 'h'is null'는 플랫 아웃 구문 오류입니다. 'SELECT IF (방향은 NULL, 'v', 'h')'와 같은 의미일까요? –

+0

아니, 나는 오리 엔테이션 = 'h'가 어디로 가고 싶지 ...하지만 오리 엔테이션 'h'로 결과가없는 경우에는 오리엔테이션 = 'v'를 대신 사용합니다. – user3011784

답변

0

원하는 경우 적절한를 작성하는 방법 경우에만 선호 방향으로 작동 한 기록 = 'H'

SELECT * FROM blogimage 
WHERE blog_id = '1' AND (orientation = 'h' OR orientation = 'v') 
ORDER BY orientation ASC LIMIT 1 
+0

하지만 orientation = 'h'방향에 우선 순위를 지정하고 싶습니다. 'v'... 그래서 blog_id = 1에는 h와 v 이미지가 모두 있습니다. 단지 h 만 원합니다. – user3011784

+0

그리고 blog_id에 'h'라는 이미지가없는 경우 ... 'v'를 사용합니다. – user3011784

+0

방금 ​​내 대답을 업데이트했습니다. 나는 당신이 필요한 것을 쉽게 해결할 수 있다고 생각합니다. –

0

이 문은 유효한 Case 문이를하고 싶어. 그러나 if exists 문이 필요하다면 저장 프로 시저를 사용해야한다고 생각합니다. 그것이 당신이 창조하려는 것입니까?

이 명령문을 사용하면 한 행을 되 찾을 수 있습니다. h 행이 있으면 다시 표시됩니다. 그렇지 않은 경우 v 행을 반환합니다.

select * from blogimage where blog_id = '1' and (orientation = 'h' Or orientation = 'v') Order By Case When orientation = 'h' Then 0 Else 1 End Asc Limit 1