请帮忙。我的眼睛麻木了。我的身体虚弱。
尝试#9432
取自这个答案MySQL delete multiple rows in one query conditions unique to each row
DELETE FROM `productimages` WHERE (`ID`,`imageURL`)
(179,'http://www.example.com/example1.jpg')
(179,'http://www.example.com/example2.jpg')
(179,'http://www.example.com/example3.jpg')
(179,'http://www.example.com/example4.jpg')
(179,'http://www.example.com/example5.jpg'))
失败。
#1064 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'((179,'https:// ...)附近使用正确的语法。
引用我的存档,在02/14/96 - 尝试#387我发现你不能在一个查询中使用多个WHERE
子句。我接下来试过了
尝试#837
DELETE FROM `productimages` (WHERE `productID` = 179 AND `imageURL` = 'http://www.example.com/example1.jpg')
(AND `productID` = 179 AND `imageURL` = 'http://www.example.com/example2.jpg')
(AND `productID` = 179 AND `imageURL` = 'http://www.example.com/example3.jpg')
(AND `productID` = 179 AND `imageURL` = 'http://www.example.com/example4.jpg')
(AND `productID` = 179 AND `imageURL` = 'http://www.example.com/example5.jpg')
(AND `productID` = 179 AND `imageURL` = 'http://www.example.com/example6.jpg')
#1064 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'附近使用正确的语法'(WHERE'productID'= 179 AND'imageURL'='https:// ...
最近的尝试,我最接近的:
尝试#10473
DELETE FROM `productimages`
WHERE `productID` = 179
AND `imageURL` = 'http://www.example.com/example1.jpg'
AND `imageURL` = 'http://www.example.com/example2.jpg'
AND `imageURL` = 'http://www.example.com/example3.jpg'
AND `imageURL` = 'http://www.example.com/example4.jpg'
AND `imageURL` = 'http://www.example.com/example5.jpg'
AND `imageURL` = 'http://www.example.com/example6.jpg'
无法形容的快乐。成功查询。
仔细看看......
0行受影响。 (查询耗时0.0128秒。)
再一次,失败了。
有没有人得到这么远呢?你认为会有手册或其他东西。
可以使用IN
条件检查元组的值。你只是有语法错误。
语法如下:
DELETE FROM `productimages`
WHERE (`productID`,`imageURL`) IN (
(179,'http://www.example.com/example1.jpg'),
(179,'http://www.example.com/example2.jpg'),
(179,'http://www.example.com/example3.jpg'),
(179,'http://www.example.com/example4.jpg'),
(179,'http://www.example.com/example5.jpg')
)
这是一种非常灵活的过滤记录的方法,适用于元组中有几个不同的ID
s的情况。但是,效率会随着列表中元组的数量而减少,并最终达到系统限制。要处理非常大的列表,最好考虑使用您可以简单加入的临时表。
问题是在你的WHERE
子句中你要求删除id为一个值的位置,而图像url是同时所有其他值。
你需要做的是使用OR
为imageURL
的每个值:
DELETE FROM `productimages` WHERE `productID` = 179 AND (
`imageURL` = 'http://www.example.com/example1.jpg'
OR `imageURL` = 'http://www.example.com/example2.jpg'
OR `imageURL` = 'http://www.example.com/example3.jpg'
OR `imageURL` = 'http://www.example.com/example4.jpg'
OR `imageURL` = 'http://www.example.com/example5.jpg'
OR `imageURL` = 'http://www.example.com/example6.jpg'
)
您还可以使用IN
运算符:
DELETE FROM `productimages`
WHERE `productID` = 179 AND `imageURL` IN (
'http://www.example.com/example1.jpg',
'http://www.example.com/example2.jpg',
'http://www.example.com/example3.jpg',
...
)
另外:你的第一个不工作的原因是你缺少一个括号和逗号。
DELETE FROM `productimages` WHERE (`ID`,`imageURL`) (
(179,'http://www.example.com/example1.jpg'),
(179,'http://www.example.com/example2.jpg'),
(179,'http://www.example.com/example3.jpg'),
(179,'http://www.example.com/example4.jpg'),
(179,'http://www.example.com/example5.jpg'),
)