如何进行大规模选择更新

时间:2013-01-16 14:48:32

标签: mysql sql sql-update

我有一个值列表(deviceID),我需要创建一个MySQL查询来更新列值,我可以通过以下方式进行查询

UPDATE Clients.Devices 
SET assignedUserID='Jhon' 
WHERE accountID='Delivery1' AND 
      (deviceID='1234' OR deviceID='1235' OR deviceID='1236')

这是一个简单的例子,但是一些accountID有超过500个devicesID所以我正在寻找一个更短的SQL语句 那么,有没有办法将deviceID列表传递给SQL服务器?

这样的东西
UPDATE Clients.Devices 
SET assignedUserID='Jhon' 
WHERE accountID='Delivery1' AND 
      (deviceID=('1234','1235','1236))

感谢。

3 个答案:

答案 0 :(得分:1)

<强>更新

如果deviceID的数据类型是数字的,则不需要单引号。

对于多个不是IN

的值,

可能=

UPDATE Clients.Devices 
SET assignedUserID = 'Jhon' 
WHERE accountID = 'Delivery1' AND deviceID IN (1234,1235,1236)

或如果ID依次使用BETWEEN

UPDATE Clients.Devices 
SET assignedUserID = 'Jhon' 
WHERE accountID = 'Delivery1' AND deviceID BETWEEN 1234 AND 1236

答案 1 :(得分:0)

你也可以试试这个:

UPDATE Clients.Devices 
SET assignedUserID='Jhon' 
WHERE accountID='Delivery1' AND deviceID > = 1234 AND deviceID <= 1236
;

答案 2 :(得分:0)

如果使用php:

,也许这会奏效
$ids = join(',',$deviceIDs);

$sql = "UPDATE Clients.Devices 
SET assignedUserID='Jhon' 
WHERE accountID='Delivery1' AND deviceID IN ($ids)";