MySql 8 删除有限制的子查询
MySql 8 delete subquery with limit
我对这个查询有疑问:
DELETE FROM tableA
WHERE idTableA IN
(SELECT tA.idTableA
FROM tableB tB
LEFT JOIN tableA tA ON tB.idTableB = tA.idTableA
WHERE tB.campoX = 100 LIMIT 1);
错误响应:错误代码:1235。此版本的MySQL尚不支持'LIMIT & IN/ALL/ANY/SOME subquery'
示例数据:
表B
10 行(这是 table 大师)
表A
50 行(table tableB 的详细信息)
我想删除 tableA 与 master (tableB) 相关的所有记录详细信息,并在 tableB 上使用条件过滤器并限制为 1 行 (
这个限制只是为了衡量一个删除行的执行时间)
MySql 的版本:8
有什么想法吗?
tk
DELETE tableA.*
FROM tableA
JOIN (SELECT tA.idTableA
FROM tableB tB
LEFT JOIN tableA tA ON tB.idTableB = tA.idTableA
WHERE tB.campoX = 100 LIMIT 1) USING (idTableA);
?
可以对select行使用exists(这最好处理b
中有多行匹配的情况),直接在外部查询中使用limit
:
delete from tablea a
where exists (select 1 from tableb b where b.campox = 100 and b.idtableb = a.itablea)
order by a.idtablea
limit 1
请注意,我在查询中添加了一个 order by
子句,因此明确定义了要删除的记录。
我对这个查询有疑问:
DELETE FROM tableA
WHERE idTableA IN
(SELECT tA.idTableA
FROM tableB tB
LEFT JOIN tableA tA ON tB.idTableB = tA.idTableA
WHERE tB.campoX = 100 LIMIT 1);
错误响应:错误代码:1235。此版本的MySQL尚不支持'LIMIT & IN/ALL/ANY/SOME subquery'
示例数据:
表B 10 行(这是 table 大师)
表A 50 行(table tableB 的详细信息)
我想删除 tableA 与 master (tableB) 相关的所有记录详细信息,并在 tableB 上使用条件过滤器并限制为 1 行 ( 这个限制只是为了衡量一个删除行的执行时间)
MySql 的版本:8
有什么想法吗? tk
DELETE tableA.*
FROM tableA
JOIN (SELECT tA.idTableA
FROM tableB tB
LEFT JOIN tableA tA ON tB.idTableB = tA.idTableA
WHERE tB.campoX = 100 LIMIT 1) USING (idTableA);
?
可以对select行使用exists(这最好处理b
中有多行匹配的情况),直接在外部查询中使用limit
:
delete from tablea a
where exists (select 1 from tableb b where b.campox = 100 and b.idtableb = a.itablea)
order by a.idtablea
limit 1
请注意,我在查询中添加了一个 order by
子句,因此明确定义了要删除的记录。