दिलचस्प पोस्ट
Window.location.href = window.location.href और window.location.reload के बीच अंतर () पोस्ट-रीडायरेक्ट-एएसपी। नेट से प्राप्त करें मृदुरीय रिपॉजिटरी के साथ गिट इंटरऑपरेबिलिटी $ स्थान भ्रामक स्थान बदलेंइसेविशेष और $ stateChangeStart फ़ाइलों और फ़ोल्डर्स सहित अनकमित परिवर्तनों को वापस कैसे लाया जाए? फाइल चेकआउट के बिना गिट शाखा स्विच करें जे एस सेट इन्टरवल केवल एक बार निष्पादित करता है कस्टम एडाप्टर और फिल्टर के साथ स्वत: पूर्णतथाचित्र देखें यदि आप एक चर जावास्क्रिप्ट में एक सरणी है, तो आप कैसे जांच करते हैं? जावा 8 में एक java.util.stream.Stream से सूची पुनर्प्राप्त करना किसी भी गुणवत्ता को खोने के बिना एक छवि का आकार बदलना asp.net mvc: कैसे www के लिए एक गैर www और इसके विपरीत अनुप्रेषित करने के लिए क्या डि कंटेनर के माध्यम से बनाए गए ऑब्जेक्ट्स को आरम्भ करने के लिए कोई पैटर्न है इस के लिए एक बढ़ावा :: साझा किया गया है एफएफएमपीईजी और जेएनआई का इस्तेमाल करते हुए वीडियो को सम्मिलित करें

MySQL में दो तालिकाओं के बीच मतभेदों की तुलना करें

ओरेकल अंतर के समान : दो तालिकाओं की तुलना कैसे करें? सिवाय MySQL में

मान लीजिए मेरे पास दो तालिकाओं, टी 1 और टी 2 हैं जो लेआउट में समान हैं लेकिन इसमें अलग-अलग डेटा हो सकते हैं।

इन दो तालिकाओं को अलग करने का सबसे अच्छा तरीका क्या है?

अधिक सटीक होने के लिए, मैं एक साधारण एसक्यूएल क्वेरी का पता लगाने की कोशिश कर रहा हूं जो बताती है कि टी 1 में एक पंक्ति से डेटा टी 2 में इसी पंक्ति से डेटा से अलग है।

ऐसा प्रतीत होता है कि मैं प्रतिच्छेदन और न ही शून्य का उपयोग नहीं कर सकता जब मैं कोशिश करता हूँ

SELECT * FROM robot intersect SELECT * FROM tbd_robot 

मुझे एक त्रुटि कोड मिलता है:

[त्रुटि कोड: 1064, एसक्यूएल राज्य: 42000] आपके एसक्यूएल वाक्यविन्यास में एक त्रुटि है; लाइन 1 पर 'SELECT * FROM tbd_robot' का उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से संबंधित मैन्युअल की जांच करें

क्या मैं कुछ वाक्यरूपी रूप से गलत कर रहा हूं? यदि नहीं, तो क्या मैं एक और क्वेरी का उपयोग कर सकता हूं?

संपादित करें: इसके अलावा, मैं एक मुफ्त संस्करण DbVisualizer के माध्यम से पूछताछ कर रहा हूँ यकीन है कि अगर यह एक कारक हो सकता है

Solutions Collecting From Web of "MySQL में दो तालिकाओं के बीच मतभेदों की तुलना करें"

इंटरएक्ट को MySQL में अनुकरण करने की आवश्यकता है:

 SELECT 'robot' AS `set`, r.* FROM robot r WHERE ROW(r.col1, r.col2, …) NOT IN ( SELECT * FROM tbd_robot ) UNION ALL SELECT 'tbd_robot' AS `set`, t.* FROM tbd_robot t WHERE ROW(t.col1, t.col2, …) NOT IN ( SELECT * FROM robot ) 

संपादित करें: शब्द के आसपास `जोड़ा गया: सेट करें

आप यूनियन द्वारा मैन्युअल रूप से इंटरसेक्शन का निर्माण कर सकते हैं। यदि आपके पास दोनों तालिकाओं में कुछ अद्वितीय फ़ील्ड है, तो यह आसान है जैसे आईडी:

 SELECT * FROM T1 WHERE ID NOT IN (SELECT ID FROM T2) UNION SELECT * FROM T2 WHERE ID NOT IN (SELECT ID FROM T1) 

यदि आपके पास एक अनूठा मूल्य नहीं है, तो आप अभी भी सिर्फ आईडी के बजाय सभी फ़ील्ड की जांच करने के लिए उपरोक्त कोड का विस्तार कर सकते हैं, और उन्हें कनेक्ट करने के लिए (जैसे आईडी नहीं (…) और OTHER_FIELD नहीं में (। ..) आदि)

मुझे इस लिंक में एक और समाधान मिला

 SELECT MIN (tbl_name) AS tbl_name, PK, column_list FROM ( SELECT ' source_table ' as tbl_name, S.PK, S.column_list FROM source_table AS S UNION ALL SELECT 'destination_table' as tbl_name, D.PK, D.column_list FROM destination_table AS D ) AS alias_table GROUP BY PK, column_list HAVING COUNT(*) = 1 ORDER BY PK 
  select t1.user_id,t2.user_id from t1 left join t2 ON t1.user_id = t2.user_id and t1.username=t2.username and t1.first_name=t2.first_name and t1.last_name=t2.last_name 

इसे इस्तेमाल करे। यह आपकी तालिका की तुलना करेगा और सभी मिलान जोड़े मिल जाएगा, यदि कोई भी बेमेल वापसी शून्य पर छोड़ दिया

हेम के उत्तर के आधार पर मैंने दो डेटाबेस के बीच के सभी मतभेदों का परीक्षण और प्रदर्शित करने के लिए एक PHP कोड बनाया। यह भी प्रदर्शित होगा कि कोई तालिका स्रोत या परीक्षण डेटाबेस में मौजूद है या नहीं। आपको अपने विवरण के साथ <> चर सामग्री को बदलना होगा।

 <?php $User = "<DatabaseUser>"; $Pass = "<DatabasePassword>"; $SourceDB = "<SourceDatabase>"; $TestDB = "<DatabaseToTest>"; $link = new mysqli( "p:". "localhost", $User, $Pass, "" ); if ( mysqli_connect_error() ) { die('Connect Error ('. mysqli_connect_errno() .') '. mysqli_connect_error()); } mysqli_set_charset( $link, "utf8" ); mb_language( "uni" ); mb_internal_encoding( "UTF-8" ); $sQuery = 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA="'. $SourceDB .'";'; $SourceDB_Content = query( $link, $sQuery ); if ( !is_array( $SourceDB_Content) ) { echo "Table $SourceDB cannot be accessed"; exit(0); } $sQuery = 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA="'. $TestDB .'";'; $TestDB_Content = query( $link, $sQuery ); if ( !is_array( $TestDB_Content) ) { echo "Table $TestDB cannot be accessed"; exit(0); } $SourceDB_Tables = array(); foreach( $SourceDB_Content as $item ) { $SourceDB_Tables[] = $item["TABLE_NAME"]; } $TestDB_Tables = array(); foreach( $TestDB_Content as $item ) { $TestDB_Tables[] = $item["TABLE_NAME"]; } //var_dump( $SourceDB_Tables, $TestDB_Tables ); $LookupTables = array_merge( $SourceDB_Tables, $TestDB_Tables ); $NoOfDiscrepancies = 0; echo " <table border='1' width='100%'> <tr> <td>Table</td> <td>Found in $SourceDB (". count( $SourceDB_Tables ) .")</td> <td>Found in $TestDB (". count( $TestDB_Tables ) .")</td> <td>Test result</td> <tr> "; foreach( $LookupTables as $table ) { $FoundInSourceDB = in_array( $table, $SourceDB_Tables ) ? 1 : 0; $FoundInTestDB = in_array( $table, $TestDB_Tables ) ? 1 : 0; echo " <tr> <td>$table</td> <td><input type='checkbox' ". ($FoundInSourceDB == 1 ? "checked" : "") ."></td> <td><input type='checkbox' ". ($FoundInTestDB == 1 ? "checked" : "") ."></td> <td>". compareTables( $SourceDB, $TestDB, $table ) ."</td> </tr> "; } echo " </table> <br><br> No of discrepancies found: $NoOfDiscrepancies "; function query( $link, $q ) { $result = mysqli_query( $link, $q ); $errors = mysqli_error($link); if ( $errors > "" ) { echo $errors; exit(0); } if( $result == false ) return false; else if ( $result === true ) return true; else { $rset = array(); while ( $row = mysqli_fetch_assoc( $result ) ) { $rset[] = $row; } return $rset; } } function compareTables( $source, $test, $table ) { global $link; global $NoOfDiscrepancies; $sQuery = " SELECT column_name,ordinal_position,data_type,column_type FROM ( SELECT column_name,ordinal_position, data_type,column_type,COUNT(1) rowcount FROM information_schema.columns WHERE ( (table_schema='$source' AND table_name='$table') OR (table_schema='$test' AND table_name='$table') ) AND table_name IN ('$table') GROUP BY column_name,ordinal_position, data_type,column_type HAVING COUNT(1)=1 ) A; "; $result = query( $link, $sQuery ); $data = ""; if( is_array( $result ) && count( $result ) > 0 ) { $NoOfDiscrepancies++; $data = "<table><tr><td>column_name</td><td>ordinal_position</td><td>data_type</td><td>column_type</td></tr>"; foreach( $result as $item ) { $data .= "<tr><td>". $item["column_name"] ."</td><td>". $item["ordinal_position"] ."</td><td>". $item["data_type"] ."</td><td>". $item["column_type"] ."</td></tr>"; } $data .= "</table>"; return $data; } else { return "Checked but no discrepancies found!"; } } ?>