MySQL出现1093错误

在尝试删除或更新数据表时遇到1093错误,原因是不能直接根据子查询结果作为条件。解决方法是将原始查询嵌套在外部查询中,使子查询成为一个独立的查询。示例中展示了如何修改DELETE语句,通过在外层查询中使用子查询结果来正确地删除重复FID的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

删除或者更新一张表中的数据的时候,会出现1093出错。

原因:不能先查出需要更新或者删除表中的某个字段来作为条件。

DELETE
FROM
	T_RECTIFICATIONDECLARATION
WHERE
	FID IN (
		SELECT
			FID
		FROM
			T_RECTIFICATIONDECLARATION
		GROUP BY
			FID
		HAVING
			COUNT(FID) > 1
	)

 解决办法:外面多嵌套一层查询,原先的查询作为子查询。

DELETE
FROM
	T_RECTIFICATIONDECLARATION
WHERE
	FID IN (
		SELECT
			a.FID
		FROM
			(
				SELECT
					FID
				FROM
					T_RECTIFICATIONDECLARATION
				GROUP BY
					FID
				HAVING
					COUNT(FID) > 1
			) a
	)