-1
votes

Query de mise à jour complexe

Tableau 1 strong> xxx pré>

Tableau 2 strong> p>

|id|name|address|car_id  |
|1 |Alex|US     |2       |
|2 |Jaso|Canada |1       |


5 commentaires

Mettre à jour T1 Join T2 sur T2.Color = 'Blue' Ensemble T1.CAR_ID = T2.CAR_ID où t1.car_id est null; Vue sur DB Fiddle


Oui, la solution de la fraise a fonctionné! Merci!


Vous devriez le poster comme une réponse pour que je puisse le choisir pour être la réponse!


C'est trop trivial


Votre requête semble être appropriée pour SQL Server - Syntaxe MySQL est une lecture différente sur la syntaxe de plusieurs table: dev.mysql.com/doc/refman/8.0/fr/update.html


3 Réponses :


1
votes

Je soupçonne que cela ne fonctionne pas dans une seule requête. [EDIT: mal, voir autre réponse]

Vous avez 2 exigences différentes pour 2 tables différentes qui n'ont pas de colonne commune. Vous devez trouver le bleu car_id indépendamment de Alexes Row car ils ne sont pas liés de quelque manière que ce soit. P>

Je le ferais comme suit: P>

UPDATE
  table1
SET
  table.car_id = (
    SELECT
      car_id
    FROM
      table2
    WHERE
      color LIKE 'blue'
  )
WHERE
  name LIKE 'Alex'


2 commentaires

Je soupçonne que tu t'es trompé


Oui, tu as raison. Mais la solution One Dower est plus compliquée que nécessaire sans avantage de performance.



0
votes

mise à jour FirstTable jointure de fixation sur la deuxième fixation.Color = 'Blue' Set Firsttable.car_id = secondTable.car_id où firstable.car_id est null;


0 commentaires

0
votes

J'ai une solution pour un problème similaire avec plus de personnes et plus de voitures. Peut-être qu'il aide DBfiddle exemple

La datatabke de base sont comme suit p >

id  name    address     car_id
 1  Alex    US          2
 2  Jaso    Canad a     1
 3  Paso    Canad a     3
 4  Paso    danad a     4


0 commentaires