2016-06-18 4 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

セット句は、表の後であるとこのwhere

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句を少し変更しました:update course course.courseID = CourseTerm.courseIDにcoursesetermを残しました set course.title = CONCAT( '2015/2016 - '、 'Title') ここで、courseterm.termID = 1またはcourseterm .termID = 2 とcourse.expiresは '0000-00-00 00:00:00'と似ていません。 –

+0

私は答えを更新しています。アンウェルが提供していれば... – scaisEdge

0

に参加する必要があります。

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') 
    ) 

そして、これはあなたのその後の問題を修正する必要があります。

関連する問題