यह एक निहित बनाता है CROSS JOIN
। यह SQL-89 सिंटेक्स है।
यहाँ मैं केवल उदाहरणों के लिए pseduo-tables (वैल्यू टेबल) का उपयोग values(1)
और values(2)
निर्माण करता हूँ। उनके बाद की बात t(x)
, और FROM-Aliasesg(y)
कहा जाता है कोष्ठक के अंदर का चरित्र स्तंभ के लिए उपनाम ( और क्रमशः) है। आप इसे आसानी से परीक्षण करने के लिए एक तालिका बना सकते हैं।x
y
SELECT *
FROM (values(1)) AS t(x), (values(2)) AS g(y)
यहां बताया गया है कि आप इसे अब कैसे लिखेंगे।
SELECT *
FROM (values(1)) AS t(x)
CROSS JOIN (values(2)) AS g(y);
वहां से आप INNER JOIN
एक सशर्त जोड़कर इसे एक अंतर्निहित बना सकते हैं।
SELECT *
FROM (values(1)) AS t(x)
CROSS JOIN (values(1)) AS g(z)
WHERE x = z;
या स्पष्ट और नए INNER JOIN
वाक्यविन्यास,
SELECT *
FROM (values(1)) AS t(x)
INNER JOIN (values(1)) AS g(z)
ON ( x = z );
तो आपके उदाहरण में ..
FROM apod, to_tsquery('neutrino|(dark & matter)') query
यह अनिवार्य रूप से नए वाक्य विन्यास के समान है,
FROM apod
CROSS JOIN to_tsquery('neutrino|(dark & matter)') AS query
जो वास्तव में एक ही है, इस मामले में, क्योंकि to_tsquery()
एक पंक्ति लौटाती है और एक सेट के रूप में नहीं,
SELECT title, ts_rank_cd(
textsearch,
to_tsquery('neutrino|(dark & matter)')
) AS rank
FROM apod
WHERE to_tsquery('neutrino|(dark & matter)') @@ textsearch
ORDER BY rank DESC
LIMIT 10;
हालांकि, इसके बाद के संस्करण संभावित कारण बन सकता है to_tsquery('neutrino|(dark & matter)')
- दो बार होते हैं, लेकिन इस मामले में यह नहीं है to_tsquery
के रूप में चिह्नित किया गया है स्थिर (के साथ सत्यापित \dfS+ to_tsquery
)।
STABLE
इंगित करता है कि फ़ंक्शन डेटाबेस को संशोधित नहीं कर सकता है, और यह कि एकल टेबल स्कैन के भीतर यह समान तर्क मानों के लिए लगातार परिणाम देगा, लेकिन इसका परिणाम SQL बयानों में बदल सकता है। यह उन कार्यों के लिए उपयुक्त चयन है जिनके परिणाम डेटाबेस लुकअप, पैरामीटर चर (जैसे कि वर्तमान समय क्षेत्र), आदि पर निर्भर करते हैं (यह AFTER ट्रिगर्स के लिए अनुचित है जो वर्तमान कमांड द्वारा संशोधित पंक्तियों को क्वेरी करना चाहते हैं।) यह भी ध्यान दें। फ़ंक्शंस के current_timestamp परिवार स्थिर के रूप में योग्य हैं, क्योंकि उनके मूल्य लेन-देन के भीतर नहीं बदलते हैं।
SQL-89, और SQL-92 के बीच अंतर की पूरी तुलना के लिए, यहां मेरा जवाब भी देखें
,
एक क्रॉस ज्वाइन होने के लिए समझ में आता है क्योंकि यह एक कार्टेशियन उत्पाद है और इसमें कोई तुलना शामिल नहीं है। क्या आप केवल 1 और प्रश्न का उत्तर दे सकते हैं? क्या हैt(x)
में(values(1)) AS t(x)
???