Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Instrukcja SQL At-Sign in przed nazwą kolumny

@ znak jest zmienną w SQL.

W MySQL służy do przechowywania wartości między kolejnymi uruchomieniami zapytania lub do przesyłania danych między dwoma różnymi zapytaniami.

Przykład

Przesyłaj dane między dwoma zapytaniami

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

Innym zastosowaniem jest ranking, dla którego MySQL nie ma natywnej obsługi.

Przechowuj wartość dla kolejnych uruchomień zapytania

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

Zwróć uwagę, że aby to zadziałało, kolejność przetwarzania wierszy w zapytaniu musi być ustalona, ​​więc łatwo się pomylić.

Zobacz:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
oświadczenie o sortowaniu i rankingu mysql
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

AKTUALIZUJ
Ten kod nigdy nie zadziała.
Właśnie otworzyłeś połączenie wcześniej i nigdzie nie są ustawione @fields.
Więc obecnie trzymają null wartości.
Na dodatek nie możesz używać @vars do oznaczania nazw pól , możesz tylko użyj @vars dla wartości.

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Domyślna wartość TERAZ w dwóch kolumnach MySQL ERROR 1067

  2. mysql wybrać int jako walutę lub przekonwertować int na format walutowy?

  3. Konwertuj datę w formacie MM/DD/RRRR na datę MySQL

  4. Łączenie warunku z dwóch kolumn mysql

  5. Ile tabel można utworzyć w bazie mysql?