Mysql Update Join per l'aggiornamento della tavola incrociata

Mysql Update Join per l'aggiornamento della tavola incrociata

Nelle ultime versioni di MySQL, puoi eseguire un aggiornamento a tavola incrociata, noto anche come aggiornamento della tabella di correlazione in cui è possibile unirti a due o più tabelle. Usando MySQL join (interno e sinistra) e query di aggiornamento, possiamo eseguire un aggiornamento incrociato in passaggi molto semplici.

Questo tutorial ti farà passare su come eseguire gli aggiornamenti a tavola incrociata MySQL utilizzando i comandi nativi mysql.

Sintassi di base

La sintassi generale per una query di join ad aggiornamento MySQL di base è:

Aggiorna DB.Tabella 1, DB.Tavolo 2,
[Sinistra join | INTERNO NOIGGIO] DB.Tabella 1 su DB.Tabella 1.colonna1 = db.Tavolo 2.colonna2
Imposta db.Tabella 1.Colum2 = db.Tavolo 2.colonna2, db.Tavolo 2.colonna3 = espressione
Dove [condizione]

Abbattiamo la query sopra in parti più piccole in modo da poterlo capire meglio.

Iniziamo definendo il tavolo principale. In questo caso, (db.Tabella 1) seguito dalla tabella che vogliamo partecipare utilizzando l'istruzione Aggiornamento, in questo caso, DB.Tavolo 2.

NOTA: È importante specificare almeno una tabella dopo l'istruzione di aggiornamento; Altrimenti, le righe nella tabella non si aggiorneranno dopo la query.

Nella seconda parte della query, specifichiamo il tipo specifico di join che vogliamo eseguire, i.e., Uni interno o sinistro e un predicato. Imposta sempre la query di join immediatamente dopo la query di aggiornamento.

Un predicato di join è una condizione di join specifica che valuta un valore booleano.

Nella parte seguente, abbiamo impostato nuovi valori sulle colonne di DB.Tabella 1 e db.Tavolo 2.

Infine, impostiamo una condizione usando la clausola Where, che aiuta a limitare le righe che subiscono l'aggiornamento.

Esempio di utilizzo

Supponiamo di avere due tabelle, chiamate TB1 e TB2; Prendi in considerazione una query di seguito per creare tabelle e aggiungere dati.

Creare database se non esiste sample_db;
Usa sample_db;
Crea la tabella TB1 (
Col1 int (11) non null,
Col2 int non null,
Chiave primaria (COL1)
);
Crea la tabella TB2 (
Col1 int non null auto_increment,
col2 varchar (100) non null,
col3 int predefinito null,
col4 int predefinito null,
Chiave primaria (COL1)
);
Inserisci nei valori TB1 (Col1, Col2) (1,0), (2,1), (3,3), (4,4), (5,5);
Inserisci nei valori TB2 (Col2, Col3, Col4) ("First", 1, 500), ("Second", 2, 1000), ("Terzo", 3, 1500), ("Quarto", 4, 2000) , ("Quinto", 5, 2500);

Nelle tabelle create usando la query sopra, possiamo eseguire una query di aggiornamento utilizzando l'istruzione di join interner poiché le tabelle sono collegate su Col2.

Considera la query di seguito:

Usa sample_db;
AGGIORNAMENTO TB2 INTERNI INTERNO TB1 su TB2.Col3 = TB1.col1 set col3 = col4 + col4 * 5;

Dal momento che vogliamo aggiornare i dati nella seconda tabella (COL3) in cui otteniamo i valori delle colonne e moltiplichiamo per 5, nell'esempio sopra, eliminiamo la condizione dove vogliamo aggiornare tutti i record nella tabella specificata.

Puoi confermare questo usando la query seleziona come mostrato di seguito:

Seleziona * da campione_db.tb2;

L'output come mostrato di seguito:

mysql> seleziona * da sample_db.tb2;
+------+--------+-------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+--------+-------+------+
| 1 | Primo | 3000 | 500 |
| 2 | Secondo | 6000 | 1000 |
| 3 | Terzo | 9000 | 1500 |
| 4 | Quarto | 12000 | 2000 |
| 5 | Quinto | 15000 | 2500 |
+------+--------+-------+------+
5 righe in set (0.00 sec)

Conclusione

In questo rapido tutorial, abbiamo discusso di come utilizzare la query di join update MySQL che ti consente di combinare le tabelle e l'aggiornamento dei valori di conseguenza.

Per saperne di più su come espandere questa funzione, considera le risorse fornite di seguito:

https: // dev.mysql.com/doc/refman/8.0/en/aggiornamento.html

https: // dev.mysql.com/doc/refman/8.0/en/join.html