Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

कॉलम नाम से पहले 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/hi/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. SQLSTATE [22007]:अमान्य डेटाटाइम प्रारूप:1292 गलत डेटाटाइम मान:'2008-03-30 02:56:12'

  3. एसक्यूएल:प्रश्नों का डिफ़ॉल्ट आदेश क्या है?

  4. पहले ड्रॉपडाउन चयन के आधार पर HTML/PHP ड्रॉपडाउन को पॉप्युलेट करें

  5. उल्लंघन अद्वितीय बाधा के कारण mysql अद्यतन/सम्मिलन विफलता का पता लगाएं