2016-06-18 2 views
1

특정 기준으로 여러 필드의 이름을 추가하려고합니다.조인과 함께 Concat 식 사용

이 잘 작동 :

select * from course 
left join courseterm on course.courseID = CourseTerm.courseID 
where courseterm.termID like 1 or 2 
and course.expires not like '0000-00-00 00:00:00' 

를 이것은 또한 잘 작동 :

UPDATE course SET course.Title = CONCAT(`Title`, ' '); 

을하지만, 이것이 내가 내 구문에 오류가 있음을 알려줍니다 :

update course 
set course.title = CONCAT('2015/2016-',`Title`) 
left join courseterm on course.courseID = CourseTerm.courseID 
where courseterm.termID like 1 or 2 
and course.expires not like '0000-00-00 00:00:00'; 

내가 할 수있는을 무엇이 잘못되었는지 파악하지 마십시오. 누군가?

답변

0

세트 절은 표 다음에하고 가입해야합니다

update course 
left join courseterm on course.courseID = CourseTerm.courseID 
set course.title = CONCAT('2015/2016-',`Title`) 
where courseterm.termID like 1 or courseterm.termID=2 
and course.expires not like '0000-00-00 00:00:00'; 
+0

그랬습니다! 감사! 나는 where 절을 조금 변경했다 : course.courseID = CourseTerm.courseID에 courseterm을 남겼다. course.title = CONCAT ('2015/2016 -','Title') 여기서 courseterm.termID = 1 또는 courseterm .termID = 2 및 course.expires는 '0000-00-00 00:00:00'이 아닙니다. –

+0

나는 대답을 업데이 트했습니다 .. 그래서 anwer 제공 .. 만약 당신이 공정한 표시 aceppeted로 질문을 해결 .. – scaisEdge

0

where 절 :

where ((courseterm.termID like 1) or 
     (2 and course.expires not like '0000-00-00 00:00:00') 
    ) 

는 "2", "사실"로 평가되는 정수입니다 무시되도록 .

  • 숫자와 문자열 like를 사용하지 마십시오 :

    where 절을 세 가지 주요 문제가있다.

  • 부울 식에 괄호를 사용하십시오.
  • 동일한 필드에서 여러 개의 동일성을 비교하는 경우 in을 사용하십시오.

그래서, 제대로 같은 논리를 쓰기 :

where (courseterm.termID in (1, 2) 
     course.expires <> '0000-00-00 00:00:00') 
    ) 

그리고이 이후의 문제를 해결해야한다.

관련 문제