【发布时间】:2020-07-08 02:37:43
【问题描述】:
我对这个查询有疑问:
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 子查询”
示例数据:
表B 10 行(它是一个表主)
表A 50行(是tableB的明细表)
我想删除与主 (tableB) 相关的 tableA 的所有记录详细信息,并在 tableB 上使用条件过滤器并限制为 1 行 ( 此限制仅用于衡量一个删除行的执行时间)
MySql 版本:8
有什么想法吗? tk
【问题讨论】:
-
Idea:你能不能给我们更多的细节?就像您正在使用的 MySQL 版本/设置一样,这个错误显然提到了
-
LIMIT没有ORDER BY是没有意义的。从子查询中只选择一条记录的逻辑是什么? -
'此限制仅用于衡量一个删除行的执行时间' - 将给出完全没有意义的结果。
-
@P.Salmon 为什么?不是真的吗?
标签: mysql sql join sql-delete