Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ONLY_FULL_GROUP_BY कैसे डिसेबल करें?


SQL मोड से ONLY_FULL_GROUP_BY हटाकर डिसेबल करें

ONLY_FULL_GROUP_BY SQL मोड (MySQL 5.7+ में डिफ़ॉल्ट रूप से सक्षम) उन क्वेरी को अस्वीकार करता है जहां SELECT सूची, HAVING, या ORDER BY में नॉन-एग्रीगेट कॉलम होते हैं जो GROUP BY में नहीं होते या फंक्शनली डिपेंडेंट नहीं होते।

वर्तमान SQL मोड जांचें

mysql> SELECT @@sql_mode;

सत्र के लिए डिसेबल करें (वर्तमान कनेक्शन)

mysql> SET sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

वैश्विक रूप से डिसेबल करें (सभी नए कनेक्शन के लिए, रीस्टार्ट तक स्थायी)

mysql> SET GLOBAL sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

स्थायी रूप से डिसेबल करें (कॉन्फ़िगरेशन फ़ाइल में)

my.cnf या my.ini में [mysqld] अनुभाग के तहत जोड़ें:

[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

फिर MySQL सेवा रीस्टार्ट करें।

उदाहरण आउटपुट

mysql> SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
Query OK, 0 rows affected (0.04 sec)

चेतावनी

  • ONLY_FULL_GROUP_BY डिसेबल करने से गलत/अनिश्चित परिणाम वाली क्वेरी चल सकती हैं।
  • बेहतर अभ्यास: क्वेरी को ठीक करें ताकि सभी नॉन-एग्रीगेट कॉलम GROUP BY में हों या एग्रीगेट फ़ंक्शन का उपयोग करें।
  • MySQL 8.0 में, ANY_VALUE() फ़ंक्शन का उपयोग जानबूझकर अनिश्चित चयन के लिए करें।

सही क्वेरी उदाहरण

-- गलत (ONLY_FULL_GROUP_BY के साथ)
SELECT department, name FROM employees GROUP BY department;

-- सही
SELECT department, ANY_VALUE(name) FROM employees GROUP BY department;
-- या
SELECT department, MAX(name) FROM employees GROUP BY department;
-- या
SELECT department, GROUP_CONCAT(name) FROM employees GROUP BY department;
  1. - MySQL में किसी टाइप को BigInt में कैसे कास्ट करें?

    CAST और CONV के साथ BigInt कन्वर्जन हेक्साडेसिमल स्ट्रिंग को BIGINT (64-बिट अनसाइन्ड) में कन्वर्ट करने के लिए: SELECT CAST(CONV(yourColumnName, 16, 10) AS UNSIGNED INTEGER) AS alias FROM yourTableName; यह आर्टिकल 1005073077 के समान है - हेक्साडेसिमल (बेस 16) से डेसिमल (बेस 10) कन्वर्जन। उदाहरण: ट

  1. - MySQL में सबक्वेरी को सही तरीके से पैरेंथेसिस में कैसे बंद करें?

    MySQL में सबक्वेरी को पैरेंथेसिस में सही ढंग से बंद करना MySQL में सबक्वेरी को हमेशा पैरेंथेसिस ( ) में बंद करना आवश्यक है। सिंटैक्स SELECT IF((SELECT COUNT(*) FROM yourTableName), Yes, No) AS anyAliasName; उदाहरण टेबल बनाएं: ); डेटा डालें: insert into SelectIfDemo(Name) values(Sam); सबक्वेरी

  1. - MySQL में SOUNDEX() फ़ंक्शन का उपयोग कैसे करें?

    MySQL में SOUNDEX() फ़ंक्शन समान उच्चारण वाले शब्दों को खोजने के लिए साउंडेक्स कोड लौटाता है। सिंटैक्स SELECT * FROM yourTableName WHERE SOUNDEX(yourValue) = SOUNDEX(yourColumnName); टेबल निर्माण mysql> CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName VARC