SELECT सूची में उपयोग की गई अभिव्यक्ति को WHERE क्लॉज में दोहराना
एक उदाहरण देखते हैं और टेबल बनाएं:
mysql> create table DemoTable1406 ( Value int ); Query OK, 0 rows affected (0.47 sec)
रिकॉर्ड डालें:
mysql> insert into DemoTable1406 values(10); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable1406 values(50); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable1406 values(40); Query OK, 1 row affected (0.07 sec) mysql> insert into DemoTable1406 values(30); Query OK, 1 row affected (0.11 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable1406;
आउटपुट:
+-------+ | Value | +-------+ | 10 | | 50 | | 40 | | 30 | +-------+ 4 rows in set (0.00 sec)
संपूर्ण अभिव्यक्ति का उपयोग करने की क्वेरी:
mysql> select Value+10 as ExpectedValue from DemoTable1406 where Value+10=40;
परिणाम:
+---------------+ | ExpectedValue | +---------------+ | 40 | +---------------+ 1 row in set (0.00 sec)
व्याख्या: WHERE क्लॉज में SELECT सूची के एलियास (ExpectedValue) का उपयोग नहीं किया जा सकता (कुछ DBMS में संभव है, लेकिन MySQL में नहीं)। इसलिए पूरी अभिव्यक्ति Value+10 को WHERE में दोहराना पड़ता है। विकल्प: सबक्वेरी या CTE (WITH क्लॉज, MySQL 8.0+) का उपयोग करें: WITH cte AS (SELECT Value+10 AS ExpectedValue FROM DemoTable1406) SELECT * FROM cte WHERE ExpectedValue=40;