sql >> Databáze >  >> RDS >> Mysql

Příkaz At-Sign v SQL před názvem sloupce

@ znak je proměnná v SQL.

V MySQL se používá k uložení hodnoty mezi po sobě jdoucími běhy dotazu nebo k přenosu dat mezi dvěma různými dotazy.

Příklad

Přenos dat mezi dvěma dotazy

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

Další použití je v hodnocení, které MySQL nemá nativní podporu.

Uložte hodnotu pro po sobě jdoucí spuštění dotazu

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

Všimněte si, že aby to fungovalo, musí být opraveno pořadí, ve kterém se zpracovávají řádky v dotazu, je snadné se mýlit.

Viz:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
prohlášení o řazení a hodnocení mysql
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

AKTUALIZACE
Tento kód nebude nikdy fungovat.
Právě jste předtím otevřeli připojení a nikde nejsou nastavena @fields.
Momentálně tedy drží null hodnot.
K tomu všemu nemůžete použít @vars k označení názvů polí , můžete pouze pro hodnoty použijte @vars.

$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. Jak předat více sloupců do proměnné v php

  2. Vyrovnávání zatížení databáze:Distribuované vs centralizované nastavení

  3. Jak definovat trigger ON COMMIT v Oracle?

  4. Import csv do mysql pomocí příkazového řádku