sql >> Database >  >> RDS >> Mysql

At-Sign in SQL-instructie vóór kolomnaam

De @ sign is een variabele in SQL.

In MySQL wordt het gebruikt om een ​​waarde op te slaan tussen opeenvolgende uitvoeringen van een zoekopdracht, of om gegevens over te dragen tussen twee verschillende zoekopdrachten.

Een voorbeeld

Gegevens overzetten tussen twee zoekopdrachten

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

Een ander gebruik is in ranking, waarvoor MySQL geen native ondersteuning heeft.

Sla een waarde op voor opeenvolgende uitvoeringen van een zoekopdracht

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

Houd er rekening mee dat om dit te laten werken, de volgorde waarin de rijen in de query worden verwerkt, moet worden vastgesteld, het is gemakkelijk om dit verkeerd te doen.

Zie:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
mysql-sorteer- en rangschikkingsverklaring
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

UPDATE
Deze code zal nooit werken.
Je hebt zojuist de verbinding eerder geopend en nergens zijn de @fields ingesteld.
Dus momenteel bevatten ze null waarden.
Bovendien je kunt @vars niet gebruiken om veldnamen aan te duiden , kunt u alleen gebruik @vars voor waarden.

$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. Hoe kan ik meerdere voorwaarden invoeren in de LIKE-operator?

  2. Snelste manier om door een grote tabel te bladeren met JDBC

  3. De resultaten van een query exporteren met MySQL Workbench

  4. Sorteren in SQL Server