我解释了问题,以及我试图实现的解决方案。我有一个包含大量数据的表,我想删除每5行4行。目的是让桌子更轻便。
这是我的要求:
SET @var_name = -1;
DELETE FROM myTable
WHERE id IN
(
SELECT id FROM myTable HAVING (@var_name := @var_name +1) % 5 !=0
)
SELECT操作正常,但与DELETE操作一起,我收到此消息
#1093 - Table 'myTable' is specified twice, both as a target for 'DELETE' and as a separate source for data
我理解其含义:我无法删除请求中的表格。可以采用解决方法:在控制台中获取完整列表,然后执行DELETE操作。在一行中执行它会更好。
谢谢你的帮助。 非常感谢
答案 0 :(得分:1)
你试试这个吗?
SET @var_name = -1;
DELETE FROM myTable WHERE (@var_name := @var_name +1) % 5 = 0