2010-09-29 13 views
7

मैं एक प्रश्न जहां दो कॉलम ही नहीं हैं चलाने के लिए कोशिश कर रहा हूँ की जरूरत नहीं है, लेकिन यह किसी भी परिणाम नहीं लौटा रहा है:पंक्तियाँ Mysql का चयन करें जहां दो कॉलम एक ही मूल्य

SELECT * FROM `my_table` WHERE `column_a` != `column_b`; 

column_a और column_b के हैं पूर्णांक प्रकार और नल शामिल हो सकता है। मैंने किसी भी भाग्य के बिना <> आईएस नहीं, आदि का उपयोग करने का प्रयास किया है। यह पता लगाना आसान है कि वे < => का उपयोग कर समान हैं, लेकिन <> और! = किसी भी पंक्ति को वापस नहीं करता है। (MySQL 5.0 का उपयोग कर)।

विचार?

उत्तर

21

समस्या यह है कि एक! = बी न्यूल है जब कोई या बी न्यूल होता है।

<=> न्यूल-सुरक्षित बराबर ऑपरेटर है। एक शून्य-सुरक्षित बस परिणाम उलट कर सकते हैं के बराबर नहीं पाने के लिए:

SELECT * 
FROM my_table 
WHERE NOT column_a <=> column_b 

अशक्त सुरक्षित ऑपरेटर का उपयोग किए बिना आप ऐसा करने के लिए होता है:

SELECT * 
FROM my_table 
WHERE column_a != column_b 
OR (column_a IS NULL AND column_b IS NOT NULL) 
OR (column_b IS NULL AND column_a IS NOT NULL) 
+0

मीठा, यह अच्छी तरह से काम करता है, धन्यवाद! – Caleb

+0

.... हटा दिया .... –

संबंधित मुद्दे