Mysql
 sql >> база данни >  >> RDS >> Mysql

При влизане в SQL израз преди име на колона

@ знакът е променлива в SQL.

В MySQL се използва за съхраняване на стойност между последователни изпълнения на заявка или за прехвърляне на данни между две различни заявки.

Пример

Прехвърляне на данни между две заявки

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

Друго използване е в класирането, за което MySQL няма естествена поддръжка.

Запазване на стойност за последователно изпълнение на заявка

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

Имайте предвид, че за да работи това, редът, в който се обработват редовете в заявката, трябва да бъде фиксиран, лесно е да се объркате.

Вижте:
http://dev.mysql .com/doc/refman/5.0/en/user-variables.html
изявление за сортиране и класиране на mysql
http:// www.xaprb.com/blog/2006/12/15/advanced-mysql-user-variable-techniques/

АКТУАЛИЗИРАНЕ
Този код никога няма да работи.
Току-що сте отворили връзката преди и никъде не са зададени @fields.
Така че в момента те държат null стойности.
В допълнение, не можете да използвате @vars за обозначаване на имена на полета , можете само използвайте @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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пребройте броя на MySQL заявките, изпълнени на страницата

  2. Автоматично стартиране на заявка в mysql

  3. mysql_fetch_assoc():предоставеният аргумент не е валиден ресурс за MySQL резултат

  4. Актуализиране на данни в MySQL база данни

  5. SQL:Използване на GROUP BY и MAX за множество колони