2011-08-03 8 views
0


저는 mysql에서 매우 새내기입니다. 만약 내가 여기 초보자 질문을하면 실례합니다. 내 경우에는
mysql을 최적화하는 경우 - 내 경우에 따라 달라집니다.


, 나는 다음과 같이 MySQL의에서 분기 만들고 싶어 :

  1. office_id가 아닌 경우는 null 다음 is_invited office_id = '0000'다음 is_invited 경우 다른 = 1
  2. = 1 내가 여기에 "if else query in mysql을"대답 @thomasrutter 본 후에 다른
  3. ...= 0

is_invited 내가 MySQL의에서이 같은 쿼리를 만든 :

select IF(y.office_id IS NOT NULL, 1, IF(y.office_id = '0000', 1, IF(y.office_id IS NULL, 0, 1))) as is_invited 


내 질문은 ,, 내가 쿼리가

많은 감사 (성능에 대한) 더 최적화 할 수 있습니다 :)

답변

0

여기 논리가 맞지 않습니다.

사례 2는 항상 만족/절대로 도달하지 않습니다. office_id가 null이 아니면, 당신은 이미 is_invited = 1을 할당합니다. 그래서 그것은 항상 null이 아니기 때문에 office_id = '0000'은 결코 테스트되지 않을 것입니다. 사실, 당신의 논리는 단순히 IFNULL (y.office_id, 0)을 is_invited로 만들기 전에 단지 IF(y.office_id IS NOT NULL, 1, 0) as is_invited

+0

ya가되어야합니다. 그러나 왜 그런지 모르겠지만 ofice_id = '0000'은 NULL로 알려져 있으므로 만들어야합니다. '0000'이 실제로 null이 아님을 확인하십시오 :) – bungdito

+0

오, yess, 우리는 그냥 y_office_id = '0000'인데도 불구하고 is_invited ..로 IF (y.office_id IS NULL, 1, 0)을 만들 수 있습니다. hehehehe .. 미안하지만, 정말로. 전에 ifnull()을 사용하려고 시도하고 '0000'이 NULL로 정의되어 있으므로 '0000'이 실제로 null이 아닌지 확인하려고합니다 .. thanks @Derek Kromm – bungdito

관련 문제