Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

LEFT JOIN अपेक्षानुसार व्यवहार नहीं करता जैसा कि MySQL में NULLs देता है

मुझे लगता है कि जिस तरह से आप सोचते हैं उससे मेल नहीं खाने का कारण यह है कि @row_number प्रत्येक सबक्वेरी के लिए 1 पर रीसेट नहीं हो रहा है।

मैंने इसका परीक्षण किया, बस पहले दो (प्रोफेसर और डॉक्टर) में शामिल हो गया, लेकिन क्रॉस जॉइन का उपयोग कर रहा था, इसलिए मैं सभी पंक्ति_नंबर मान देख सकता था।

+------------+--------+------------+----------+
| row_number | name   | row_number | name     |
+------------+--------+------------+----------+
|          8 | Aamina |          1 | Ashley   |
|          8 | Aamina |          2 | Belvet   |
|          8 | Aamina |          3 | Britney  |
|          8 | Aamina |          4 | Maria    |
|          8 | Aamina |          5 | Meera    |
|          8 | Aamina |          6 | Naomi    |
|          8 | Aamina |          7 | Priyanka |
|          9 | Julia  |          1 | Ashley   |
|          9 | Julia  |          2 | Belvet   |
|          9 | Julia  |          3 | Britney  |
|          9 | Julia  |          4 | Maria    |
|          9 | Julia  |          5 | Meera    |
|          9 | Julia  |          6 | Naomi    |
|          9 | Julia  |          7 | Priyanka |
|         10 | Priya  |          1 | Ashley   |
|         10 | Priya  |          2 | Belvet   |
|         10 | Priya  |          3 | Britney  |
|         10 | Priya  |          4 | Maria    |
|         10 | Priya  |          5 | Meera    |
|         10 | Priya  |          6 | Naomi    |
|         10 | Priya  |          7 | Priyanka |
+------------+--------+------------+----------+

आप देख सकते हैं कि स्पष्ट रूप से पंक्ति संख्या उत्तरोत्तर वृद्धि हुई है, और दोनों उपश्रेणियों में 1 का प्रारंभिक मान पहले से ही पंक्तियों की संख्या के समय तक किया जा चुका है।

आप प्रत्येक सबक्वेरी में एक अलग उपयोगकर्ता चर का उपयोग करके इसे ठीक करने में सक्षम हो सकते हैं।

लेकिन यह प्रश्न वैसे भी काम नहीं करेगा जैसा आप चाहते हैं, उदाहरण के लिए यदि आपके पास कभी भी अन्य व्यवसायों के सदस्यों की तुलना में कम प्रोफेसर हैं।

ईमानदारी से, मैं SQL में इस प्रकार का स्तंभ स्वरूपण नहीं करूँगा। बस चार स्वतंत्र प्रश्न करें, सभी परिणामों को अपने आवेदन में लाएं, और आउटपुट के रूप में कॉलम में प्रारूपित करें। यह उस तरह से बहुत आसान होगा, और सरल कोड लिखना आसान है, डीबग करना आसान है, बनाए रखना आसान है।

अपनी टिप्पणी दें:

काफी हद तक, इसे कोडिंग चुनौती के रूप में करना ठीक है, जब तक आप (और अन्य पाठक) जानते हैं कि एक वास्तविक प्रोजेक्ट में, अत्यधिक चतुर SQL करना हमेशा सबसे अच्छा विचार नहीं होता है।

चूंकि आप एक कोडिंग चुनौती कर रहे हैं, इसलिए आपको इसे स्वयं हल करना चाहिए, इसलिए मैं आपको वह समाधान नहीं दे सकता जो नीचे आउटपुट उत्पन्न करता है। लेकिन यह इस बात का सबूत है कि यह संभव है (मैं वादा करता हूं कि मैंने आउटपुट का मजाक नहीं उड़ाया, मैं वास्तव में इसे अपनी टर्मिनल विंडो से कॉपी और पेस्ट करता हूं)। शुभकामनाएँ!

+------------+-----------+--------+-----------+----------+
| row_number | Professor | Doctor | Singer    | Actor    |
+------------+-----------+--------+-----------+----------+
|          1 | Ashley    | Aamina | Christeen | Eve      |
|          2 | Belvet    | Julia  | Jane      | Jennifer |
|          3 | Britney   | Priya  | Jenny     | Ketty    |
|          4 | Maria     | NULL   | Kristeen  | Samantha |
|          5 | Meera     | NULL   | NULL      | NULL     |
|          6 | Naomi     | NULL   | NULL      | NULL     |
|          7 | Priyanka  | NULL   | NULL      | NULL     |
+------------+-----------+--------+-----------+----------+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लिंक किए गए मानों से अद्वितीय उपयोगकर्ता ढूँढना

  2. तैयार विवरण पर स्विच करना

  3. MySQL:त्रुटि 1628:तालिका 'ग्राहक' के लिए टिप्पणी बहुत लंबी है (अधिकतम =60)

  4. जब कॉलम मान बाधा से मेल खाता है तो mysql को कॉलम नाम मिलता है

  5. यह वास्तव में क्या करता है Class.forName(com.mysql.jdbc.Driver).newInstance();