SQL编写常见错误记录

mysql错误:1093 You can't specify target table for update in FROM clause

错误代码html

UPDATE tb_applicant 
SET data_3 = 0
WHERE
	id IN (
		SELECT
			id
		FROM
			 tb_applicant 
		WHERE
			`status` = 1
		AND check_status = 1
		AND id NOT IN (
			SELECT
				applicant_id
			FROM
				tb_test_paper 
		)
	)

缘由:MySQL对子查询支持比较薄弱,能够创建缓存表解决,参考博客mysql

更正后的代码sql

UPDATE tb_applicant 
SET data_3 = 0
WHERE
	id IN (
		SELECT
			temp.id
		FROM
			(select id from tb_applicant 
		WHERE
			`status` = 1
		AND check_status = 1
		AND id NOT IN (
			SELECT
				applicant_id
			FROM
				tb_test_paper 
		)) temp
	)
相关文章
相关标签/搜索