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

MySQL में सामान्य तालिका अभिव्यक्ति

कॉमन टेबल एक्सप्रेशंस (CTE) आपको MySQL में जटिल SQL क्वेरी को आसानी से लिखने की अनुमति देता है। इस लेख में, हम देखेंगे कि MySQL में कॉमन टेबल एक्सप्रेशन क्या है और MySQL में CTE कैसे लिखें।


सामान्य तालिका अभिव्यक्ति क्या है

कॉमन टेबल एक्सप्रेशन एक नामित परिणाम सेट है जिसका दायरा SQL क्वेरी तक सीमित है जिसमें इसे परिभाषित और उपयोग किया जाता है। यह एक व्युत्पन्न तालिका के समान है लेकिन इसे एक वस्तु के रूप में संग्रहीत नहीं किया जाता है और व्युत्पन्न तालिकाओं के विपरीत, आत्म-संदर्भित हो सकता है। नतीजतन, सीटीई MySQL में व्युत्पन्न तालिकाओं की तुलना में बेहतर प्रदर्शन प्रदान करता है।

बोनस पढ़ें :MySQL में मार्जिन की गणना कैसे करें


MySQL में सामान्य तालिका अभिव्यक्ति

यहाँ MySQL में कॉमन टेबल एक्सप्रेशन का सिंटैक्स दिया गया है।

WITH cte_name (column_list) AS (     
      query 
)  
SELECT * FROM cte_name;

उपरोक्त क्वेरी में, आपको सीटीई का नाम, एसक्यूएल क्वेरी निर्दिष्ट करने की आवश्यकता है जिसका परिणाम सीटीई नाम का उपयोग करके संदर्भित किया जाना चाहिए। कृपया ध्यान दें, column_list . में कॉलम की संख्या आपकी क्वेरी . के समान होना चाहिए .

आइए आम टेबल एक्सप्रेशन (CTE) का एक उदाहरण देखें।

बोनस पढ़ें :SQL क्वेरी का उपयोग करके सबसे अधिक बिकने वाला उत्पाद कैसे प्राप्त करें

मान लें कि आपके पास बिक्री (आईडी, ऑर्डर_डेट, राशि) . है टेबल।

mysql> create table sales(id int, order_date date, amount int);

mysql> insert into sales(id, order_date, amount)
      values(1, '2021-01-01', 200),
      (2, '2021-01-02', 250),
      (3, '2021-01-03', 220),
      (4, '2021-01-04', 230),
      (5, '2021-01-05', 210),
      (6, '2021-01-06', 100),
      (7, '2021-01-07', 120),
      (8, '2021-01-08', 150),
      (9, '2021-01-09', 180),
      (10, '2021-01-10', 200);

 mysql> select * from sales;
 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    1 | 2021-01-01 |    200 |
 |    2 | 2021-01-02 |    250 |
 |    3 | 2021-01-03 |    220 |
 |    4 | 2021-01-04 |    230 |
 |    5 | 2021-01-05 |    210 |
 |    6 | 2021-01-06 |    100 |
 |    7 | 2021-01-07 |    120 |
 |    8 | 2021-01-08 |    150 |
 |    9 | 2021-01-09 |    180 |
 |   10 | 2021-01-10 |    200 |
 +------+------------+--------+

यहां केवल ऐसे बिक्री रिकॉर्ड का चयन करने के लिए एक सीटीई है, जिनकी राशि>200 है।

with test_cte as (
     select id,order_date,amount from sales
     where amount>200
 ) select * from test_cte; 

 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    1 | 2021-01-01 |    200 |
 |    2 | 2021-01-02 |    250 |
 |    3 | 2021-01-03 |    220 |
 |    4 | 2021-01-04 |    230 |
 |    5 | 2021-01-05 |    210 |
 |   10 | 2021-01-10 |    200 |
 +------+------------+--------+

उपरोक्त सीटीई में, हम पंक्तियों को फ़िल्टर करने के लिए SELECT क्वेरी निर्दिष्ट करते हैं>200 के अंदर क्लॉज के साथ।

बोनस पढ़ें :MySQL में केस स्टेटमेंट का उपयोग कैसे करें

कृपया ध्यान दें, आप CTE का उपयोग SELECT, UPDATE, INSERT और DELETE स्टेटमेंट के साथ कर सकते हैं। यहाँ उसी के लिए वाक्य रचनाएँ दी गई हैं।

WITH … SELECT …
WITH … UPDATE …
WITH … DELETE …

साथ ही, आप एक सीटीई को सबक्वायरी के रूप में उपयोग कर सकते हैं, जैसा कि नीचे दिखाया गया है

SELECT … WHERE id IN (WITH … SELECT …);
SELECT * FROM (WITH … SELECT …) AS temporary_table;

यदि आप CREATE/INSERT/REPLACE स्टेटमेंट के इनपुट के रूप में SELECT स्टेटमेंट के परिणाम का उपयोग करते हैं, तो आप इसमें क्लॉज के साथ भी उपयोग कर सकते हैं। यहां कुछ उदाहरण दिए गए हैं,

CREATE TABLE … WITH … SELECT …
CREATE VIEW … WITH … SELECT …
INSERT … WITH … SELECT …
REPLACE … WITH … SELECT …
DECLARE CURSOR … WITH … SELECT …
EXPLAIN … WITH … SELECT …

बोनस पढ़ें :MySQL में विभिन्न स्थितियों के साथ एकाधिक गणनाएं प्राप्त करें


Ubiq में कॉमन टेबल एक्सप्रेशन

Ubiq रिपोर्टिंग टूल CTE-आधारित SELECT क्वेरी का समर्थन करता है और SQL परिणामों को अलग-अलग तरीकों से देखना आसान बनाता है। यह आपको MySQL क्वेरी परिणामों से डैशबोर्ड और चार्ट बनाने की भी अनुमति देता है। यहाँ Ubiq में उपरोक्त CTE क्वेरी है।

वास्तव में, आपके द्वारा क्वेरी चलाने के बाद, आप चार्ट में परिणाम को प्लॉट करने के लिए केवल एक विज़ुअलाइज़ेशन प्रकार पर क्लिक कर सकते हैं।

MySQL के लिए रिपोर्टिंग टूल चाहिए? Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP और MySQL में टाइमज़ोन सेट करें

  2. MySql CLI का उपयोग करके बड़ी CSV फ़ाइल को MySql में आयात करने का सबसे तेज़ तरीका

  3. पीडीओ तालिका से एक कॉलम को 1-आयामी सरणी में लाता है

  4. एक समग्र प्राथमिक कुंजी जोड़ने के लिए तालिका बदलें

  5. एक आदेश के साथ SQL समूह द्वारा