Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Update Query utilizzando un join sinistro

Quindi vuoi spostare le cartelle solo se una cartella con lo stesso nome sotto la cartella principale di destinazione non esistono:

UPDATE file_manager_folder f1
LEFT OUTER JOIN file_manager_folder f2 
    ON f1.name = f2.name AND f2.parentId = 54
SET f1.parentId = 54 
WHERE f2.name IS NULL AND f1.id IN (1,2,3);

La condizione di unione cerca una cartella con lo stesso nome sotto il genitore di destinazione. La clausola WHERE verifica che tale cartella non esista (f2.name è nullo solo se il join esterno non trova corrispondenza).