Mysql
 sql >> Database >  >> RDS >> Mysql

At-Sign in Istruzione SQL prima del nome della colonna

Il @ sign è una variabile in SQL.

In MySQL viene utilizzato per memorizzare un valore tra esecuzioni consecutive di una query o per trasferire dati tra due query diverse.

Un esempio

Trasferisci dati tra due query

SELECT @biggest:= MAX(field1) FROM atable;
SELECT * FROM bigger_table WHERE field1 > @biggest;

Un altro utilizzo è nel ranking, per il quale MySQL non ha il supporto nativo.

Memorizza un valore per esecuzioni consecutive di una query

INSERT INTO table2
  SELECT @rank := @rank + 1, table1.* FROM table1
  JOIN( SELECT @rank := 0 ) AS init
  ORDER BY number_of_users DESC

Tieni presente che affinché funzioni, l'ordine in cui le righe vengono elaborate nella query deve essere corretto, è facile sbagliare.

Vedi:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
dichiarazione di classificazione e ordinamento mysql
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

AGGIORNAMENTO
Questo codice non funzionerà mai.
Hai appena aperto la connessione prima e da nessuna parte i @fields sono impostati.
Quindi attualmente mantengono null valori.
Inoltre, non puoi usare @vars per denotare i nomi dei campi , puoi solo usa @vars per i valori.

$sql1 = "
LOAD DATA LOCAL INFILE 'import.csv'
REPLACE INTO TABLE tablename
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"'
IGNORE 1 LINES
(`normalField`, @field1, @field2, `normalField2`, @field3, @field4)";