Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại-Đăng nhập câu lệnh SQL trước tên cột

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Độ dài tối đa của dữ liệu tôi có thể đặt trong cột BLOB trong MySQL là bao nhiêu?

  2. Symfony2 - Doctrine2 QueryBuilder Ở đâu trong trường ManyToMany

  3. Cách XÓA một cột khỏi một bảng trong MySQL bằng cách sử dụng số cột

  4. cơ sở dữ liệu latin-1 đến utf-8

  5. Loại dữ liệu tốt nhất để lưu trữ giá trị tiền trong MySQL