mysql UPDATE多行但单列不同的值从数组中获取

时间:2012-08-13 00:06:46

标签: php mysql

好吧所以我有一个看起来像

的php数组

array('somehash' => 'someotherhash', 'somehash2' => 'someotherhash2');

这里有somehash = producthash和someotherhash = tohash

$db->query('UPDATE sometable SET status = '.self::STATUS_NOT_AVAILABLE.', towhere = '.self::TO_WHERE.', '.
                    .'tohash = WHEN or IF or ??? and how ?, '.
                    .'WHERE status = '.self::STATUS_AVAILABLE.'  AND '.
                    .'producthash IN (' . implode(',' , $prodarray) . ')') or $db->err(__FILE__,__LINE__);

所以在上面的查询中我希望通过tohash mysql字段从php数组中获取producthash

类似于tohash = IF(producthash IN '.$prodarray.', $prodarray['producthash'] , whatever)

当然以上的IF不会工作因为我没有$prodarray['producthash']

中的producthash值

任何人都知道解决这个问题的方法,因为我在数组中有超过1000个值,并且不想运行一千个更新

INSERT INTO ON DUPLICATE KEY在此原因中是不可能的,因为此表唯一键基于3个字段,并且在执行此更新时我没有所有三个字段值。

1 个答案:

答案 0 :(得分:0)

子查询?

UPDATE ...
WHERE ... producthash in (SELECT * FROM products)

只要您没有从正在更新的同一个表中进行选择,这将有效 - 如果没有解决方法,mysql不允许这样做。