[英]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_id
, week
和day
,我必须在这三个基础上更新注释。
会非常感谢您的帮助。
是否必须在一个查询中?
一个解决方案可能是(伪代码):
$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.