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

set子句必須是表後,加入

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子句:更新課程 left join courseterm on course.courseID = CourseTerm.courseID set course.title = CONCAT('2015/2016 - ','Title') where courseterm.termID = 1 or courseterm .termID = 2 and course.expires not like'0000-00-00 00:00:00'; –

+0

我已經更新答案..所以如果提供的是...解決你的問題,如果公平標記爲aceppeted .. – scaisEdge

0

where條款:

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

「2」是被評估爲「真」的整數,所以被忽略。

你有三個主要問題與此where條款:

  • 不要使用like數字和字符串。
  • 對布爾表達式使用括​​號。
  • 使用in進行同一字段上的多重相等比較。

所以,正確的寫邏輯:

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

,這應該解決您的後續問題。

相關問題