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

MySQL में दो कॉलम के मान भिन्न होने वाली पंक्तियाँ कैसे चुनें?

MySQL में दो कॉलम के मान **समान नहीं** होने वाली पंक्तियाँ चुनने के लिए != (या <>) ऑपरेटर का उपयोग करें, साथ में NULL हैंडलिंग भी करें क्योंकि NULL != NULL FALSE होता है।

सिंटैक्स

SELECT * FROM yourTableName 
WHERE column1 != column2 
   OR (column1 IS NULL AND column2 IS NOT NULL)
   OR (column2 IS NULL AND column1 IS NOT NULL);

क्यों अतिरिक्त शर्तें?

  • SQL में NULL != NULL → FALSE (नहीं TRUE)
  • NULL != 5 → NULL (नहीं TRUE)
  • 5 != NULL → NULL (नहीं TRUE)
  • WHERE केवल TRUE को चुनता है, NULL/FALSE को नहीं

उदाहरण के साथ समझें

टेबल बनाएं:

CREATE TABLE selectTwoColumns (
    Id INT NOT NULL AUTO_INCREMENT,
    FirstNumber INT,
    SecondNumber INT,
    PRIMARY KEY(Id)
);

विभिन्न संयोजन डालें:

INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(10, 20);   -- भिन्न
INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(30, 40);   -- भिन्न
INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(20, 20);   -- समान
INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(50, 60);   -- भिन्न
INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(50, 50);   -- समान
INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(70, NULL); -- एक NULL

सभी रिकॉर्ड देखें:

SELECT * FROM selectTwoColumns;

आउटपुट:

+----+-------------+--------------+
| Id | FirstNumber | SecondNumber |
+----+-------------+--------------+
| 1  | 10          | 20           |
| 2  | 30          | 40           |
| 3  | 20          | 20           |
| 4  | 50          | 60           |
| 5  | 50          | 50           |
| 6  | 70          | NULL         |
+----+-------------+--------------+

भिन्न मान वाली पंक्तियाँ चुनें

SELECT * FROM selectTwoColumns 
WHERE FirstNumber != SecondNumber 
   OR (FirstNumber IS NULL AND SecondNumber IS NOT NULL)
   OR (SecondNumber IS NULL AND FirstNumber IS NOT NULL);

परिणाम:

+----+-------------+--------------+
| Id | FirstNumber | SecondNumber |
+----+-------------+--------------+
| 1  | 10          | 20           |
| 2  | 30          | 40           |
| 4  | 50          | 60           |
| 6  | 70          | NULL         |
+----+-------------+--------------+

सरल विकल्प: NOT (<=>) ऑपरेटर

MySQL का <=> (NULL-सेफ इक्वल) ऑपरेटर:

SELECT * FROM selectTwoColumns 
WHERE NOT (FirstNumber <=> SecondNumber);

<=> तुलना:

ABA <=> BNOT (A <=> B)
1020FALSETRUE ✓
2020TRUEFALSE
NULLNULLTRUEFALSE
70NULLFALSETRUE ✓

COALESCE के साथ (यदि डिफॉल्ट मान सेट करना हो)

SELECT * FROM selectTwoColumns 
WHERE COALESCE(FirstNumber, -1) != COALESCE(SecondNumber, -1);

यहां -1 ऐसा मान है जो डेटा में नहीं आता।

नोट

  • != और <> समान हैं
  • <=> MySQL-विशिष्ट है, पोर्टेबल नहीं
  • सबसे पोर्टेबल: स्पष्ट NULL जांच के साथ !=
  1. - MySQL में NOT NULL मान के लिए 1 सेट करें

    MySQL में किसी कॉलम के NOT NULL मान होने पर 1 और NULL होने पर 0 लौटाने के लिए IF() फंक्शन के साथ IS NOT NULL ऑपरेटर का उपयोग करें। यह डेटा वैलिडेशन, रिपोर्टिंग, और कंडीशनल एग्रीगेशन के लिए उपयोगी है। बुनियादी सिंटैक्स SELECT IF( IS NOT NULL, 1, 0) AS anyAliasName; आउटपुट: 1 (क्योंकि खाली स्ट्रिंग N

  1. - MySQL में WHERE IN के साथ NULL मान कैसे संभालें?

    सिंटैक्स select yourColumnName1, yourColumnName2 from yourTableName where yourValue in(yourColumnName1, yourColumnName2) or yourColumnName1 is NULL; उदाहरण insert into demo60(first_name,last_name) values(John,Smith), (John,Doe), (null,Brown), (David,Miller), (David,Smith), (Chris,Brown); क्वेरी

  1. - C# में दो String ऑब्जेक्ट का मान समान है या नहीं जांचें

    उदाहरण C# में string (जो System.String का एलियास है) Equals() मेथड को ओवरराइड करता है ताकि सामग्री की तुलना की जा सके। दो स्ट्रिंग ऑब्जेक्ट बराबर हैं यदि उनके वर्ण समान क्रम में हों। using System; public class Demo { public static void Main(String[] args) { string str1 = John; s