最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL刪除數(shù)據(jù)1093錯(cuò)誤

 更新時(shí)間:2024年02月04日 11:32:52   作者:早起的年輕人  
在進(jìn)行更新和刪除操作的時(shí)候,條件語句里面有子查詢語句,此時(shí)會(huì)報(bào)1093錯(cuò)誤,本文就來介紹一下1093錯(cuò)誤的解決,感興趣的可以了解一下

現(xiàn)象:在進(jìn)行更新和刪除操作的時(shí)候,條件語句里面有子查詢語句,此時(shí)會(huì)報(bào)1093錯(cuò)誤!
錯(cuò)誤日志:1093 - You can’t specify target table ‘t_suer_study_video’ for update in FROM clause

首先根據(jù)條件來查詢

SELECT * FROM t_suer_study_video WHERE video_course_id =207;

如下圖所求,其中有一個(gè)用戶有兩條數(shù)據(jù),train_id 為 null 的那一條數(shù)據(jù)為重復(fù)數(shù)據(jù),我需要?jiǎng)h除的。

在這里插入圖片描述

線上環(huán)境中,像上頁面這樣的數(shù)據(jù),不小心產(chǎn)生了幾千條,是寫的程序的一個(gè)bug導(dǎo)致的問題,所以我需要批量刪除,先按用戶ID分組查詢一下:

SELECT user_id, COUNT(*) FROM t_suer_study_video WHERE video_course_id =207 GROUP BY user_id;  

如下圖,數(shù)量為2的用戶的數(shù)據(jù)就是需要處理的

在這里插入圖片描述

然后篩選分組的用戶數(shù)據(jù)

SELECT
	user_id,
	COUNT(*) 
FROM
	t_suer_study_video 
WHERE
	video_course_id = 207 
GROUP BY
	user_id 
HAVING
	COUNT(*) > 1;

我這測試數(shù)據(jù),只有一個(gè)用戶的是重復(fù)的,實(shí)際中是有多個(gè)用戶的

在這里插入圖片描述

然后刪除重復(fù)的,就是將上述分組查詢出來的重復(fù)用戶的ID作為條件來刪除

DELETE 
FROM
	t_suer_study_video 
WHERE
	video_course_id = 207 
	AND train_id IS NULL 
	AND user_id IN (
					SELECT
						user_id 
					FROM
						t_suer_study_video 
					WHERE
						video_course_id = 207 
					GROUP BY
						user_id 
					HAVING
					COUNT(*) > 1 
	);

出現(xiàn)錯(cuò)誤 1093 - You can’t specify target table ‘t_suer_study_video’ for update in FROM clause

在這里插入圖片描述

原因:在進(jìn)行更新和刪除操作的時(shí)候,條件語句里面有子查詢語句,此時(shí)會(huì)報(bào)1093錯(cuò)誤!,MySQL在進(jìn)行讀取數(shù)據(jù)的時(shí)候 會(huì)加讀鎖(共享鎖),其他請求可以再次加上讀鎖,但是不能加寫鎖,(如果在讀的過程中,又有其他線程進(jìn)行了更新操作,就會(huì)導(dǎo)致當(dāng)前線程讀取到的數(shù)據(jù)不是最新的數(shù)據(jù),這就是不可重復(fù)讀現(xiàn)象)。因此不支持對數(shù)據(jù)更新的同時(shí)進(jìn)行查詢操作,加了讀鎖 就不允許加寫鎖。

解決辦法:外面多嵌套一層查詢,原先的查詢作為子查詢。

DELETE 
FROM
	t_suer_study_video 
WHERE
	video_course_id = 207 
	AND train_id IS NULL 
	AND user_id IN (
				SELECT
					a.user_id 
				FROM
					(
							SELECT
								user_id 
							FROM
								t_suer_study_video 
							WHERE
								video_course_id = 207 
							GROUP BY
								user_id 
							HAVING
								COUNT(*) > 1 
					) a 
	);

刪除成功

在這里插入圖片描述

 到此這篇關(guān)于MySQL刪除數(shù)據(jù)1093錯(cuò)誤的文章就介紹到這了,更多相關(guān)MySQL 1093錯(cuò)誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

五峰| 安陆市| 临泉县| 株洲县| 铅山县| 莱芜市| 濮阳市| 左云县| 梧州市| 且末县| 南城县| 临高县| 井研县| 陵川县| 比如县| 松原市| 高青县| 五寨县| 西乌珠穆沁旗| 江津市| 宜兰县| 通州区| 昂仁县| 大埔县| 永定县| 泸水县| 隆子县| 咸丰县| 金华市| 松溪县| 澄江县| 安岳县| 微山县| 古蔺县| 老河口市| 玉田县| 靖安县| 三门峡市| 周口市| 高碑店市| 泾源县|