मेरे पास दो टेबल हैं, टेबल ए और टेबल बी।

टेबल ए

Col1
----------
one.1.1
two.2.2
three.2.2
one.1
one.3

टेबल बी

| Col1   | Col2 | Col3 |
+----------------------+
| one    | 1    | 1    |
| two    | 2    | 2    |
| three  | 2    | 1    |
| three  | 2    | 2    |

मैं एक लेफ्ट जॉइन चाहता था जिसमें यह उन मानों को प्रदर्शित करता है जो टेबल ए में मौजूद हैं लेकिन टेबल बी में नहीं हैं। मुझे टेबल बी कॉलम को जोड़ना होगा, यह दोनों प्रारूप "Col1.Col2" या "Col1.Col2.Col3" में हो सकता है।

यहाँ मेरी क्वेरी है:

SELECT Col1
FROM TableA AS A 
    LEFT JOIN TableB AS B ON A.Col1 = B.Col1+'.'+B.Col2+'.'+B.Col3
WHERE A.Col1 IS NOT NULL
     AND B.Col1+'.'+B.Col2+'.'+B.Col3 IS NULL
0
polycarp 2 मई 2018, 15:12

2 जवाब

सबसे बढ़िया उत्तर

यह MySQL क्वेरी (SQLFiddle) वह करेगी जो आप चाहते हैं। ध्यान दें कि MySQL में आप स्ट्रिंग्स को जोड़ने के लिए CONCAT या CONCAT_WS का उपयोग करते हैं। यह भी ध्यान दें कि आपको केवल यह जांचना है कि B.col1 NULL है या नहीं।

SELECT A.Col1
FROM TableA A
LEFT JOIN TableB B
ON A.Col1 = CONCAT_WS('.', B.Col1, B.Col2, B.Col3) OR
   A.Col1 = CONCAT_WS('.', B.Col1, B.Col2)
WHERE B.Col1 IS NULL

आउटपुट:

Col1
one.3
0
Nick 2 मई 2018, 15:36

यदि आप लेफ्ट जॉइन टेबल के कॉलम का उपयोग करते हैं, तो यह किस स्थिति में एक आंतरिक जुड़ाव के रूप में काम करता है .. कंडीशन को क्लॉज पर रखें

आपके मामले में आपको उन पंक्तियों की आवश्यकता है जो मेल नहीं खातीं, बस उनका उपयोग करें

SELECT Col1 FROM TableA AS A 
LEFT JOIN TableB as B ON A.Col1 = B.Col1+'.'+B.Col2+'.'+B.Col3   
WHERE B.Col1+'.'+B.Col2+'.'+B.Col3 IS NULL
0
scaisEdge 2 मई 2018, 15:26