2017-10-18 9 views
0

Je l'ai utilisé pour This Stack ma requête:Comment puis-je mettre id_supply à la dernière entrée/id dans suply

UPDATE breads 
SET id_supply = (SELECT max(id) FROM supply) 
WHERE id = (SELECT MAX(id) FROM breads) 

J'ai ajouté un nouveau record dans l'offre. Maintenant, je veux que mon dernier pain pour avoir le id_supply du dernier supply.id

#1093 - Table 'breads' is specified twice, 
both as a target for 'UPDATE' and as a separate source for data 
+1

Votre requête fonctionne-t-elle ou non? – isaace

+1

Cela me semble correct. Avez-vous une erreur? Quel est le problème? – JNevill

Répondre

1

MySQL, vous ne pouvez pas se référer à la table mise à jour par la suite dans la requête (bien, sans un peu de bidouille).

Au lieu de cela, utilisez order by et limit:

UPDATE breads b 
    SET b.id_supply = (SELECT max(s.id) FROM supply s) 
    ORDER BY b.id DESC 
    LIMIT 1; 
+0

0 lignes mises à jour. – Halfacht

+1

@Halfacht. . . Si tel est le cas, le 'id_supply' de la" dernière "ligne est déjà défini sur l'ID d'approvisionnement maximum. –

0

Si la réponse donnée par @Gordon ne fonctionne pas, alors je suppose que vous devriez essayer un petit hack il parle dans sa réponse.

Bien que, la requête de Gordon fonctionne très bien avec mes données de test, mais si cela ne fonctionne pas pour vous essayez la requête suivante:

UPDATE breads 
SET id_supply = (SELECT max(id) FROM supply) 
WHERE id = (SELECT MAX(br.id) FROM (select *from breads) br); 

Cliquez ici pour Demo

Hope it helps!

Remarque: Si cette requête ne fonctionne pas, vous devez ajouter les données de schéma et dans votre question.

+0

Est-ce que cela fonctionne comme prévu? –