2010-12-08 77 views
1

Ce:Comment la syntaxe mysql delete diffère-t-elle de select?

SELECT * 
    FROM tbl_playlists, tbl_playlistsongs 
WHERE tbl_playlists.playlist_id = tbl_playlistsongs.playlist_id 
    AND tbl_playlists.playlist_id = 1 

... fonctionne pas de problème. Mais:

DELETE from tbl_playlists, tbl_playlistsongs 
WHERE tbl_playlists.playlist_id = tbl_playlistsongs.playlist_id 
    AND tbl_playlists.playlist_id = 1 

... dit que j'ai une erreur de syntaxe. Ils sont identiques autres que SELECT * vs DELETE. Cela me semble toujours parfaitement logique ... mais il me manque quelque chose!

Répondre

4

SQL traditionnel ne prend pas en charge les suppressions multi-tables, mais MySQL le fait. Cela signifie que vous utilisez MySQL syntaxe spécifique:

DELETE pl, pls 
    FROM TBL_PLAYLISTS pl 
    JOIN TBL_PLAYLISTSONGS pls ON pls.playlist_id = pl.playlist_id 
WHERE pl.playlist_id = 1 

Référence:

+0

Intéressant, ne savait jamais MySQL soutenu rejoindre les suppressions. –

+0

@Kaleb Brasee: [MySQL UPDATE statements] (http://dev.mysql.com/doc/refman/5.0/fr/update.html) aussi - dommage que ce ne soit pas plus commun, car c'est très utile. –

+0

Donc, vous devez utiliser la notation JOIN, pas seulement le faire de façon associative (quel que soit le terme approprié ...) Très intéressant! – Damon