此查询通过在其中使用多个检查来更新数据库表。问题是我想在那个星期和一天中针对顾问ID插入所有缺失的行。
UPDATE agenda
SET comments = 1
WHERE term_id = 31
AND day IN ( 1, 3 )
AND week IN ( 1, 3, 4 )
AND consultant_id IN ( 1, 2, 3)
例如,数据库中有一行consultant_id=3 and week=1 which has no day=2
,我想插入具有consultant_id=3 ,week=1, day=2 and comments=1
的新行。
如果行consultant_id=3 ,week=1, day=2 exist
,则只需更新注释。
我尝试使用的内容ON DUPLICATE KEY
this related ticket
但问题是我在数组中有consultant_id
个,week
和day
,我必须根据这三个更新注释。
非常感谢任何帮助。
答案 0 :(得分:0)
是否必须在一个查询中?
解决方案可能是(伪代码):
$result = query("UPDATE agenda
SET comments = 1
WHERE term_id = 31
AND day IN ( 1, 3 )
AND week IN ( 1, 3, 4 )
AND consultant_id IN ( 1, 2, 3) ");
if (affected_rows($result) == 0) {
// do insert query
}
答案 1 :(得分:-1)
我认为您的查询是正确的,但如果您提供的示例反映了您的表格,那么查询将不会更新任何内容。
您希望使用consultant_id=3 ,week=1, day=2 and comments=1
更新表格。
在您的查询中,您将此语句AND day IN ( 1, 3 )
这意味着您将天数限制为只有一天和三天。因此day=2
将无法满足条件,这意味着更新将无效。
如果要添加新记录,请改用insert
语句。