दिलचस्प पोस्ट
MySQLi mysql_result () के बराबर? oracle – एकाधिक पंक्तियों के लिए ओरेकल तालिका में एकाधिक अल्पविराम से विभाजित मूल्य स्प्लिट करें मैं अपने एंड्रॉइड फोन के यूयूआईडी को एक आवेदन में कैसे प्राप्त करूं? JQGrid Toolbar खोज: एक कॉलम के लिए कई शब्द खोजना jQuery बूटस्ट्रैप-एसएएस में परिभाषित नहीं है प्ले-सर्विसेज़ स्थान को एंड्रॉइड पिरमिशन.WRITE_EXTERNAL_STORAGE और android.permission.READ_EXTERNAL_STORAGE अनुमति की आवश्यकता क्यों है? मैं एएसपी.नेट एमवीसी में पेजिंग कैसे करूं? क्या google.loader.clientlocation अभी भी समर्थित है अमूर्त वर्ग या इंटरफ़ेस का उपयोग कब किया जाए? इकाई फ़्रेमवर्क / लिनक एक्सपेरेशन स्ट्रिंग से इंट में परिवर्तित मैपिंग ऑब्जेक्ट को ऑब्जेक्ट और इसके विपरीत मैं शैल स्क्रिप्ट्स में $ PATH तत्वों को हेरफेर कैसे करूं? क्या पायथन में खोजशब्दों की एक सूची प्राप्त करना संभव है? : आखिरी बच्चा उम्मीद के मुताबिक काम नहीं कर रहा है? जब केस वर्ग के पास केवल एक फ़ील्ड होता है तो क्लास के मामले में जेसन को कैसे चालू करें

MySQL में अंतर को वैकल्पिक

मुझे निम्न क्वेरी को MySQL में लागू करने की आवश्यकता है।

(select * from emovis_reporting where (id=3 and cut_name= '全プロセス' and cut_name='恐慌') ) intersect ( select * from emovis_reporting where (id=3) and ( cut_name='全プロセス' or cut_name='恐慌') ) 

मुझे पता है कि प्रतिच्छेदन MySQL में नहीं है तो मुझे एक और तरीका चाहिए। कृपया मेरा मार्ग दर्शन कीजिए।

वेब के समाधान से एकत्रित समाधान "MySQL में अंतर को वैकल्पिक"

माइक्रोसॉफ्ट एसक्यूएल सर्वर का INTERSECT "किसी भी विशिष्ट मान देता है जो इंटरसेक्ट ऑपरैण्ड के बाएं और दाएं किनारों पर दोनों क्वेरी से लौटाए जाते हैं" यह एक मानक INNER JOIN या WHERE EXISTS क्वेरी से अलग है

एस क्यू एल सर्वर

 CREATE TABLE table_a ( id INT PRIMARY KEY, value VARCHAR(255) ); CREATE TABLE table_b ( id INT PRIMARY KEY, value VARCHAR(255) ); INSERT INTO table_a VALUES (1, 'A'), (2, 'B'), (3, 'B'); INSERT INTO table_b VALUES (1, 'B'); SELECT value FROM table_a INTERSECT SELECT value FROM table_b value ----- B (1 rows affected) 

माई एसक्यूएल

 CREATE TABLE `table_a` ( `id` INT NOT NULL AUTO_INCREMENT, `value` varchar(255), PRIMARY KEY (`id`) ) ENGINE=InnoDB; CREATE TABLE `table_b` LIKE `table_a`; INSERT INTO table_a VALUES (1, 'A'), (2, 'B'), (3, 'B'); INSERT INTO table_b VALUES (1, 'B'); SELECT value FROM table_a INNER JOIN table_b USING (value); +-------+ | value | +-------+ | B | | B | +-------+ 2 rows in set (0.00 sec) SELECT value FROM table_a WHERE (value) IN (SELECT value FROM table_b); +-------+ | value | +-------+ | B | | B | +-------+ 

इस विशेष प्रश्न के साथ, आईडी कॉलम में शामिल है, इसलिए डुप्लिकेट मान वापस नहीं आएंगे, लेकिन पूर्णता की खातिर, यहां एक MySQL विकल्प है जिसमें INNER JOIN का उपयोग करें और DISTINCT :

 SELECT DISTINCT value FROM table_a INNER JOIN table_b USING (value); +-------+ | value | +-------+ | B | +-------+ 

और दूसरा WHERE ... IN और DISTINCT का उपयोग करते हुए उदाहरण:

 SELECT DISTINCT value FROM table_a WHERE (value) IN (SELECT value FROM table_b); +-------+ | value | +-------+ | B | +-------+ 

यूनिसेन ऑल और ग्रुप बाय का उपयोग करके, एक दूसरे को एक दूसरे को काटना करने का एक और प्रभावी तरीका है। बड़े डेटासेट पर मेरे परीक्षण के अनुसार प्रदर्शन दो बार बेहतर होते हैं I

उदाहरण:

 SELECT t1.value from ( (SELECT DISTINCT value FROM table_a) UNION ALL (SELECT DISTINCT value FROM table_b) ) AS t1 GROUP BY value HAVING count(*) >= 2; 

यह अधिक प्रभावी है, क्योंकि इनर जॉइन समाधान के साथ, MySQL पहली क्वेरी के परिणामों के लिए दिखेगा, फिर प्रत्येक पंक्ति के लिए, दूसरी क्वेरी में परिणाम के लिए देखें यूनियन ऑल-ग्रुप बाय सॉल्यूशन के साथ, यह पहली क्वेरी के परिणाम, दूसरे प्रश्न के परिणाम की जांच करेगा, फिर परिणाम एक बार में सभी एक साथ ग्रुप करें।

cut_name= '全プロセス' and cut_name='恐慌' बाद से आपकी क्वेरी हमेशा खाली cut_name= '全プロセス' and cut_name='恐慌' सही पर कभी मूल्यांकन नहीं करेगी।

सामान्य तौर पर, MySQL में INTERSECT को इस तरह से अनुकरण किया जाना चाहिए:

 SELECT * FROM mytable m WHERE EXISTS ( SELECT NULL FROM othertable o WHERE (o.col1 = m.col1 OR (m.col1 IS NULL AND o.col1 IS NULL)) AND (o.col2 = m.col2 OR (m.col2 IS NULL AND o.col2 IS NULL)) AND (o.col3 = m.col3 OR (m.col3 IS NULL AND o.col3 IS NULL)) ) 

यदि आपकी तालिकाओं दोनों में स्तंभों को NOT NULL के रूप में चिह्नित किया गया NOT NULL , तो आप IS NULL भागों को छोड़ सकते हैं और क्वेरी को थोड़ा अधिक कुशल के साथ फिर से लिख सकते हैं:

 SELECT * FROM mytable m WHERE (col1, col2, col3) IN ( SELECT col1, col2, col3 FROM othertable o ) 

यहां पर पूर्णता के लिए INTERSECT अनुकरण के लिए एक और तरीका है ध्यान दें कि अन्य उत्तरों में सुझाए गए IN (SELECT ...) फ़ॉर्म आमतौर पर अधिक कुशल हैं

आमतौर पर एक मेज के लिए बुलाया प्राथमिक कुंजी के साथ mytable कहा जाता है:

 SELECT id FROM mytable AS a INNER JOIN mytable AS b ON a.id = b.id WHERE (a.col1 = "someval") AND (b.col1 = "someotherval") 

(ध्यान दें कि यदि आप इस क्वेरी के साथ SELECT * उपयोग करते हैं तो आपको दो बार के रूप में कई कॉलम मिलेंगे जैसे कि mytable में परिभाषित किया गया mytable , ऐसा इसलिए है क्योंकि INNER JOIN कार्टेशियन उत्पाद उत्पन्न होता है)

INNER JOIN यहाँ आपकी तालिका से पंक्ति-जोड़े के प्रत्येक क्रमबद्धन को उत्पन्न करता है। इसका अर्थ है कि प्रत्येक संभव क्रम में पंक्तियों का हर संयोजन उत्पन्न होता है WHERE क्लॉज तब जोड़ी के a हिस्से को फिल्टर करता a , फिर b साइड। नतीजा यह है कि दोनों पंक्तियों को संतुष्ट करने वाली केवल पंक्तियों को लौटा दिया जाता है, जैसे कि प्रतिच्छेदन दो प्रश्नों को करना होगा।

अपनी समस्या को 2 बयानों में तोड़ दें: सबसे पहले, आप सभी का चयन करना चाहते हैं यदि

 (id=3 and cut_name= '全プロセス' and cut_name='恐慌') 

सच हैं । दूसरे, यदि आप सभी का चयन करना चाहते हैं

 (id=3) and ( cut_name='全プロセス' or cut_name='恐慌') 

सच हैं। इसलिए, हम या तो दोनों में शामिल होंगे क्योंकि हम सभी को चुनना चाहते हैं यदि उनमें से कोई भी सत्य है।

 select * from emovis_reporting where (id=3 and cut_name= '全プロセス' and cut_name='恐慌') OR ( (id=3) and ( cut_name='全プロセス' or cut_name='恐慌') ) 

मैंने इसे केवल MySQL 5.7 में चेक किया है और वास्तव में आश्चर्यचकित हूं कि कोई भी एक साधारण उत्तर देने के लिए नहीं: नैतिक जुड़ाव

जब तालिकाओं या (परिणाम का चयन करें) के पास एक समान स्तंभ है, तो आप नैतिक जोड़े का उपयोग चौराहे को खोजने के लिए कर सकते हैं:

यहां छवि विवरण दर्ज करें

उदाहरण के लिए:

टेबल 1 :

आईडी, नाम, नौकरी

'1', 'जॉन', '1'

'2', 'जैक', '3'

'3', 'एडम', '2'

'4', 'बिल', '6'

टेबल 2 :

आईडी, नाम, नौकरी

'1', 'जॉन', '1'

'2', 'जैक', '3'

'3', 'एडम', '2'

'4', 'बिल', '5'

'5', 'मैक्स', '6'

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

 SELECT * FROM table1 NATURAL JOIN table2; 

क्वेरी परिणाम: आईडी, नाम, जॉब

'1', 'जॉन', '1'

'2', 'जैक', '3'

'3', 'एडम', '2'

AFAIR, MySQL INNER से जुड़कर इंटरसेक्ट लागू करता है।

 SELECT campo1, campo2, campo3, campo4 FROM tabela1 WHERE CONCAT(campo1,campo2,campo3,IF(campo4 IS NULL,'',campo4)) NOT IN (SELECT CONCAT(campo1,campo2,campo3,IF(campo4 IS NULL,'',campo4)) FROM tabela2);