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

WHERE क्लॉज के बाद JOIN

मुझे लगता है कि आप RDBMS इंजन द्वारा निष्पादित निष्पादन के प्रवाह के लिए SQL के सिंटैक्स की गलती करते हैं:यह क्वेरी

SELECT a,b FROM big b
LEFT JOIN (SELECT b as small_b,c,d FROM small) ON big.b=small.small_b
WHERE b.foo='bar'

केवल big . की पंक्तियों में शामिल होने के लिए अनुकूलित किया जाएगा foo='bar' . द्वारा फ़िल्टर किया गया शर्त, संपूर्ण big . पर नहीं , किसी भी क्वेरी ऑप्टिमाइज़र द्वारा जो इसके नमक के लायक है, इस तथ्य के बावजूद कि WHERE JOIN . के बाद क्लॉज टेक्स्ट के रूप में दिखाई देता है ।

आप इसे बिना किसी आंतरिक SELECT . के फिर से लिखना चाह सकते हैं इस तरह:

SELECT t1.a as big_a, t1.b as big_b, t2.b as small_b, t2.c, t2.d
FROM big t1
LEFT JOIN small t2 ON t1.b = t2.b
WHERE t1.foo='bar'


  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. लारवेल 5.1 - होमस्टेड MySQL कनेक्शन। `कनेक्शन अस्वीकृत` और `ऐसी कोई फ़ाइल या निर्देशिका नहीं`

  3. mysql varchar में निर्देशिका स्थान कैसे जोड़ें?

  4. Mac os x 10.6.6 . में MySql को फिर से स्थापित करें

  5. कोडनिर्देशक - रूटिंग पर एक्सेस मॉडल और डेटाबेस