繁体   English   中英

如果存在更新,则根据WHERE子句插入

[英]If exists update else insert on basis of WHERE clause

该查询通过在何处使用多个检查来更新数据库表。 问题是我想在那一周和一天中针对顾问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 and week=1 which has no day=2 ,我想插入一个新行,其中一行具有consultant_id=3 ,week=1, day=2 and comments=1 如果存在advisor_id consultant_id=3 ,week=1, day=2 exist ,则应仅更新注释。

我试图在此相关票证的 ON DUPLICATE KEY上使用的是问题,但问题是我的数组中都有所有consultant_idweekday ,我必须在这三个基础上更新注释。

会非常感谢您的帮助。

是否必须在一个查询中?

一个解决方案可能是(伪代码):

$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
}

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

您要使用consultant_id=3 ,week=1, day=2 and comments=1更新表。

在查询中,您AND day IN ( 1, 3 )以下语句AND day IN ( 1, 3 ) ,这意味着您将日期限制为仅一和三。 因此day=2将不满足条件,这意味着更新将无法进行。

如果要添加新记录,请使用insert语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM