sql >> Base de Datos >  >> RDS >> Mysql

Al iniciar sesión en la instrucción SQL antes del nombre de la columna

El @ signo es una variable en SQL.

En MySQL se utiliza para almacenar un valor entre ejecuciones consecutivas de una consulta o para transferir datos entre dos consultas diferentes.

Un ejemplo

Transferir datos entre dos consultas

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

Otro uso es en la clasificación, para el cual MySQL no tiene soporte nativo.

Almacenar un valor para ejecuciones consecutivas de una consulta

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

Tenga en cuenta que para que esto funcione, se debe corregir el orden en que se procesan las filas en la consulta, es fácil equivocarse.

Consulte:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
declaración de clasificación y clasificación de mysql
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

ACTUALIZAR
Este código nunca funcionará.
Acabas de abrir la conexión antes y en ninguna parte están configurados los campos @.
Así que actualmente contienen null valores.
Para colmo, no puede usar @vars para indicar nombres de campo , puedes solo use @vars para valores.

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