2011-01-08 7 views
8

चलो कहते हैं कि मैं एक तालिका में निम्नलिखित पांच रिकॉर्ड के साथ एक MySQL डेटाबेस था करते हैं:MySQL: कई क्षेत्रों भर में खोजने डुप्लिकेट

ID: 1 
Field1: A 
Field2: B 
Field3: C 

ID: 2 
Field1: D 
Field2: E 
Field3: F 

ID: 3 
Field1: A 
Field2: H 
Field3: I 

ID: 4 
Field1: J 
Field2: K 
Field3: A 

ID: 5 
Field1: M 
Field2: D 
Field3: O 

सूचना कि निम्न मान दोहराया गया है:

आईडी 1, क्षेत्र 1 आईडी 3, क्षेत्र 1 और आईडी 4, क्षेत्र 3.

आईडी 2, क्षेत्र 1 आईडी 5 जितना समान मान है, क्षेत्र 2.

जितना समान मान है वहाँ एक SELECT कथन वें है उपरोक्त सभी डुप्लिकेट मिल सकते हैं?

उत्तर

6

यह संभव है, लेकिन यकीन नहीं है अगर यह किसी भी अधिक सिर्फ आवेदन स्तर पर यह कर की तुलना में कुशल है:

अपनी मेज:

mysql> select * from test; 
+----+--------+--------+--------+ 
| id | field1 | field2 | field3 | 
+----+--------+--------+--------+ 
| 1 | A  | B  | C  | 
| 2 | D  | E  | F  | 
| 3 | A  | H  | I  | 
| 4 | J  | K  | A  | 
| 5 | M  | D  | O  | 
+----+--------+--------+--------+ 
5 rows in set (0.00 sec) 

चयन खोजने के लिए ड्यूप्स:

mysql> select count(value) as dupe_count,value from (select field1 as value from test union all select field2 from test union all select field3 from test) as tbl group by value having count(value) > 1 order by 1 desc; 
+------------+-------+ 
| dupe_count | value | 
+------------+-------+ 
|   3 | A  | 
|   2 | D  | 
+------------+-------+ 
2 rows in set (0.00 sec) 

मूल रूप से आप तीन स्तंभों को एक में जोड़ते हैं तो डुप्लीज़

+0

बहुत बहुत धन्यवाद! – Nick