我试图了解如何更新具有不同值的多行,我只是没有得到它。解决方案无处不在,但对我来说,它看起来很难理解。
例如,对一个查询进行三次更新:
UPDATE table_users
SET cod_user = '622057'
, date = '12082014'
WHERE user_rol = 'student'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '2913659'
, date = '12082014'
WHERE user_rol = 'assistant'
AND cod_office = '17389551';
UPDATE table_users
SET cod_user = '6160230'
, date = '12082014'
WHERE user_rol = 'admin'
AND cod_office = '17389551';
我读了一个例子,但我真的不明白如何进行查询。即:
UPDATE table_to_update
SET cod_user= IF(cod_office = '17389551','622057','2913659','6160230')
,date = IF(cod_office = '17389551','12082014')
WHERE ?? IN (??) ;
我不完全清楚如何做查询,如果有多个条件在哪里和在if条件..有什么想法?
在php中,使用mysqli实例的multi_query方法。
$sql = "SELECT COUNT(*) AS _num FROM test;
INSERT INTO test(id) VALUES (1);
SELECT COUNT(*) AS _num FROM test; ";
$mysqli->multi_query($sql);
比较更新30,000 raw中的事务、插入、case方法的结果。
事务:5.5194580554962
插入:0.20669293403625
例:16.474853992462
多:0.0412278175354
如您所见,多语句查询比最高答案更有效。
以防万一你得到这样的错误信息:
PHP Warning: Error while sending SET_OPTION packet
您可能需要增加mysql配置文件中的max_allowed_packet。
在php中,使用mysqli实例的multi_query方法。
$sql = "SELECT COUNT(*) AS _num FROM test;
INSERT INTO test(id) VALUES (1);
SELECT COUNT(*) AS _num FROM test; ";
$mysqli->multi_query($sql);
比较更新30,000 raw中的事务、插入、case方法的结果。
事务:5.5194580554962
插入:0.20669293403625
例:16.474853992462
多:0.0412278175354
如您所见,多语句查询比最高答案更有效。
以防万一你得到这样的错误信息:
PHP Warning: Error while sending SET_OPTION packet
您可能需要增加mysql配置文件中的max_allowed_packet。