Domanda

A volte è necessario eseguire gli aggiornamenti di base su un join. Ad esempio:

UPDATE t1 SET col1 = 'val1'
FROM table1 as t1
INNER JOIN table2 as t2
ON t1.ID = t2.t1_id
WHERE t2.col3 = 'val3'

Questo funziona perfettamente, ma per qualche ragione, in MS SQL Management Studio Express, vuole convertire questo

UPDATE t1 SET col1 = 'val1'
FROM table1 as t1
INNER JOIN table2 as t2
ON t1.ID = t2.t1_id
CROSS JOIN t2
WHERE t2.col3 = 'val3'

Si aggiunge un crossjoin per qualche motivo che non capisco.

Ora la mia domanda è: Perché Management Studio credo che questo è quello che volevo dire? Deve avere un uso effettivo, altrimenti non sarebbe suggerirlo. Eppure non ho idea di come e quando (e perché).

È stato utile?

Soluzione

Secondo MSDN a croce uniscono così è equivalente a un inner join. Forse usa croce si unisce perché un cross join possono essere utilizzati per creare prodotti cartesiani e più semplice si unisce -. Mentre un inner join è più limitato

Altri suggerimenti

Deve essere un errore, perché il codice di pugno è rigth.

Prova

Aggiornamento t1 insieme col1 = 'val1' da table1 t1, t2 table2 dove t1.id = t2.t1_id e t2.col3 = 'val3'

Si getta lo stesso risultato, ma potrebbe essere meno efficiente. Does SQL-MS aggiungere alcun codice? Strano ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top