Browse Source

修改删除分类

genlong 5 months ago
parent
commit
bb78978596
1 changed files with 31 additions and 12 deletions
  1. 31 12
      models/data_manage/edb_classify.go

+ 31 - 12
models/data_manage/edb_classify.go

@@ -168,18 +168,37 @@ WHERE a.classify_id IN (SELECT classify_id FROM classify_cte);`
 }
 
 func DeleteEdbClassify(classifyId int) (err error) {
-	sql := ` DELETE FROM edb_classify
-				WHERE classify_id IN(
-				SELECT t.classify_id FROM
-				(
-				SELECT rd.*
-				FROM (SELECT * FROM edb_classify WHERE parent_id IS NOT NULL) rd,
-				(SELECT @pid := ?) pd
-				WHERE FIND_IN_SET(parent_id, @pid) > 0
-				AND @pid := CONCAT(@pid, ',', classify_id)
-				UNION SELECT * FROM edb_classify WHERE classify_id = @pid
-				)AS t
-				) `
+	//sql := ` DELETE FROM edb_classify
+	//			WHERE classify_id IN(
+	//			SELECT t.classify_id FROM
+	//			(
+	//			SELECT rd.*
+	//			FROM (SELECT * FROM edb_classify WHERE parent_id IS NOT NULL) rd,
+	//			(SELECT @pid := ?) pd
+	//			WHERE FIND_IN_SET(parent_id, @pid) > 0
+	//			AND @pid := CONCAT(@pid, ',', classify_id)
+	//			UNION SELECT * FROM edb_classify WHERE classify_id = @pid
+	//			)AS t
+	//			) `
+
+	sql := `WITH RECURSIVE ClassifyHierarchy ( classify_id, parent_id ) AS 
+     (
+      SELECT classify_id, 
+             parent_id
+        FROM edb_classify
+       WHERE parent_id = ?
+     UNION ALL
+         SELECT e.classify_id, 
+                e.parent_id
+           FROM edb_classify e
+     INNER JOIN ClassifyHierarchy ch 
+             ON e.parent_id = ch.classify_id
+     )
+DELETE 
+  FROM edb_classify
+ WHERE classify_id IN ( SELECT classify_id
+          FROM ClassifyHierarchy
+       );`
 	err = global.DmSQL["data"].Exec(sql, classifyId).Error
 
 	return