Mysql
 sql >> Datenbank >  >> RDS >> Mysql

At-Sign in der SQL-Anweisung vor dem Spaltennamen

Der @ sign ist eine Variable in SQL.

In MySQL wird es verwendet, um einen Wert zwischen aufeinander folgenden Abfragen zu speichern oder um Daten zwischen zwei verschiedenen Abfragen zu übertragen.

Ein Beispiel

Daten zwischen zwei Abfragen übertragen

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

Eine weitere Verwendung ist das Ranking, für das MySQL keine native Unterstützung hat.

Speichern Sie einen Wert für aufeinanderfolgende Ausführungen einer Abfrage

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

Beachten Sie, dass die Reihenfolge, in der die Zeilen in der Abfrage verarbeitet werden, festgelegt sein muss, damit dies funktioniert. Dies kann leicht falsch gemacht werden.

Siehe:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
Mysql-Sortierungs- und Ranking-Anweisung
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

AKTUALISIEREN
Dieser Code wird niemals funktionieren.
Sie haben die Verbindung gerade erst geöffnet und nirgendwo sind die @fields gesetzt.
Also enthalten sie derzeit null Werte.
Darüber hinaus können Sie @vars nicht verwenden, um Feldnamen anzugeben , können Sie nur Verwenden Sie @vars für Werte.

$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)";