@
dấu là một biến trong SQL.
Trong MySQL, nó được sử dụng để lưu trữ một giá trị giữa các lần chạy liên tiếp của một truy vấn hoặc để chuyển dữ liệu giữa hai truy vấn khác nhau.
Một ví dụ
Chuyển dữ liệu giữa hai truy vấn
SELECT @biggest:= MAX(field1) FROM atable;
SELECT * FROM bigger_table WHERE field1 > @biggest;
Một cách sử dụng khác là xếp hạng, mà MySQL không có hỗ trợ gốc.
Lưu trữ giá trị cho các lần chạy truy vấn liên tiếp
INSERT INTO table2
SELECT @rank := @rank + 1, table1.* FROM table1
JOIN( SELECT @rank := 0 ) AS init
ORDER BY number_of_users DESC
Lưu ý rằng để điều này hoạt động, thứ tự các hàng được xử lý trong truy vấn phải được cố định, điều này rất dễ xảy ra sai.
Xem:
http://dev.mysql .com / doc / refman / 5.0 / en / user-variable.html
tuyên bố sắp xếp và xếp hạng mysql
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/
CẬP NHẬT
Mã này sẽ không bao giờ hoạt động.
Bạn vừa mở kết nối trước đó và không có @fields được đặt.
Vì vậy, hiện tại họ giữ null
giá trị.
Trên hết, bạn không thể sử dụng @vars để biểu thị tên trường , bạn có thể chỉ sử dụng @vars cho các giá trị.
$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)";