2016-10-13 3 views
0

U sing the selected answer here, J'ai essayé de créer une requête MySQL qui sélectionne les colonnes et les valeurs mais je reçois un 'Chaque table dérivée doit avoir son propre alias'. Je n'ai que deux tables: matrix_swfl_res & RLN que j'ai défini comme e & d respectivement. Qu'est-ce que je rate?MYSQL UPDATE SELECT à partir de deux tables

UPDATE (SELECT e.MLSNumber, d.MLSNumber 
      FROM matrix_swfl_res e, RLN d 
     WHERE e.MLSNumber = d.MLSNumber) 
    SET e.RSLN = d.RSLN 
+0

Vous n'avez pas lu la réponse que vous liez? –

+1

Ce genre de problème est parfois révélateur d'un mauvais design – Strawberry

Répondre

1

Si vous considérez la réponse liée, vous devez faire une jointure lorsque vous souhaitez mettre à jour une table

ici l'erreur mysql est parce que

(SELECT e.MLSNumber, d.MLSNumber 
      FROM matrix_swfl_res e, RLN d 
     WHERE e.MLSNumber = d.MLSNumber) 

est considerated comme une table Dérivées, comme vous l'écrivez, c'est comme si vous vouliez mettre à jour cette table dérivée.

Si je comprends ce que vous voulez: Vous souhaitez mettre à jour le tableau A avec certains sélectionnez que vous avez fait précédemment, voici ce que vous devez faire:

UPDATE A 
INNER JOIN (SELECT e.MLSNumber, d.RSLN 
       FROM matrix_swfl_res e 
        INNER JOIN RLN d ON e.MLSNumber = d.MLSNumber) as Q 
    ON A.MLSNumber= Q.MLSNumber) 
SET A.RSLN = Q.RSLN 

Je n'ai pas toutes les tables détails, mais j'espère avec cet exemple, il sera plus clair

1

La deuxième partie de votre réponse liée est ce que vous avez besoin - quelque chose comme

UPDATE matrix_swfl_res e 
    INNER JOIN RLN d ON e.MLSNumber = d.MLSNumber 
    SET e.RSLN = d.RSLN