0

此查询通过在 where 中使用多个检查来更新 DB 表。问题是我想在那一周和那一天针对顾问 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 此相关票证 但问题是我将所有consultant_idweek's 和day's 放在一个数组中,我必须根据这三个更新评论。

非常感谢任何帮助。

4

2 回答 2

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
}
于 2013-05-30T06:28:19.280 回答
-1

我认为您的查询是正确的,但是如果您提供的示例反映了您的表格,则查询将不会更新任何内容。

你想用consultant_id=3 ,week=1, day=2 and comments=1.

在您的查询中,您输入了此语句 AND day IN ( 1, 3 ) ,这意味着您将天数限制为只有一到三天。所以day=2将不满足条件,这意味着更新将不起作用。

如果您想添加新的记录使用insert语句。

于 2013-05-30T06:58:28.233 回答