[Err] 1093 - You can‘t specify target table ‘XXX‘ for update in FROM clause

这个错误大致的意思就是你不能在同一语句中,先select出同一表中的某些值,再update或者insert这个表。

我出错的语句大致是这样:

INSERT INTO sys_user
VALUES
	(
		NULL,
		'JackeyLove',
		(
			SELECT
				id
			FROM
				sys_user
			WHERE
				name = 'Uzi'
		)
	);

我想先根据name = 'Uzi'查出sys_user表对应的id值,然后插入到sys_user表,这就违反标题中的错误了,那么如何改呢?

我们只需要外面包一层皮即可:

INSERT INTO sys_user
VALUES
	(
		NULL,
		'JackeyLove',
		(
			SELECT
				USER .id
			FROM
				(
					SELECT
						id
					FROM
						sys_user
					WHERE
						NAME = 'Uzi'
				) AS USER
		)
	);

你可能感兴趣的:(#,MYSQL,数据库,mysql,1093)