2010-05-28 1 views
0

Je travaille sur une procédure stockée qui doit supprimer des lignes spécifiques en fonction d'un horodatage. Voici ce que j'allais utiliser jusqu'à ce que je découvre que vous ne pouvez pas inclure une clause select dans l'instruction delete si elles travaillent toutes les deux sur la même table.Meilleure façon d'exécuter DELETE utilisant les identifiants d'une instruction SELECT dans MYSQL

DELETE FROM product WHERE merchant_id = 2 AND product_id IN 
(SELECT product_id FROM product WHERE merchant_id = 1 AND timestamp_updated > 1275062558); 

est-il une bonne façon de gérer cela dans une procédure stockée. Normalement, je voudrais juste jeter la logique pour construire la liste de product_id en PHP, mais j'essaye d'avoir tout le traitement fait sur le serveur de données.

+0

Une sorte de nouveauté sur ce site. – Aglystas

+0

Est-ce que product_id est une clé primaire? si c'est le cas, comment merchant_id peut-il avoir deux valeurs différentes 1 et 2 pour le même product_id? – mdma

Répondre

0

Utilisez une auto-jointure.

DELETE p0 
FROM product AS p0 
JOIN product AS p1 ON p1.product_id=p0.product_id 
WHERE p0.merchant_id=2 
AND p1.merchant_id=1 AND p1.timestamp_updated>1275062558 
Questions connexes