मेरे पास निम्न तालिकाएँ हैं और यदि नाम समान है तो उसी तालिका से कॉपी करके तालिका T2 में डेटा सम्मिलित करने का प्रयास कर रहा है।
उदाहरण के लिए, यदि T2 का नाम लाल है तो T2 फ़ील्ड के साथ T1 से आईडी और नाम कॉपी करें।
टेबल T1
ID| NAME
5 RED T
6 BLUE T
टेबल T2
ID| NAME| FIELD 1| FIELD 2|FIELD 3
1 RED 17 20 23
2 RED 10 15 9
3 BLUE 7 8 3
अपेक्षित परिणाम:
TABLE T3
ID| NAME| FIELD 1| FIELD 2|FIELD 3
1 RED 17 20 23
1 RED 10 15 9
5 RED T 17 20 23
5 RED T 10 15 9
3 BLUE T 7 8 3
6 BLUE T 7 8 3
मैंने जो कोशिश की है वह यहां है:
Insert into T1
Select ID, Name, Field1, Field2, Field3 From T2 a
Left Join T1 b
On a.Name like b.name
4 जवाब
आपने T2 में डालने का उल्लेख किया है लेकिन परिणाम T3 प्रदर्शित करते हैं इसलिए मैं अभी के लिए T3 के साथ गया। यदि आप वास्तव में केवल वही रिकॉर्ड चाहते हैं जो पहले से T2 में नहीं थे तो आप UNION को दूसरे भाग में छोड़ सकते हैं। चूंकि आपने कहा था कि 'युक्त' आपके उद्देश्यों के लिए 'समान' जैसा ही है:
CREATE TABLE T1
(
ID INT,
NAME VARCHAR(20)
);
INSERT INTO T1 VALUES (5, 'RED T');
INSERT INTO T1 VALUES (6, 'BLUE T');
CREATE TABLE T2
(
ID INT,
NAME VARCHAR(20),
FIELD1 INT,
FIELD2 INT,
FIELD3 INT
);
INSERT INTO T2 VALUES (1,'RED',17,20,23);
INSERT INTO T2 VALUES (2,'RED',10,15,9);
INSERT INTO T2 VALUES (3,'BLUE',7,8,3);
INSERT INTO T3(ID, NAME, FIELD1, FIELD2, FIELD3)
SELECT T1.ID, T1.NAME, T2.FIELD1, T2.FIELD2, T2.FIELD3
FROM T1 INNER JOIN T2 ON T1.NAME LIKE '%'||T2.NAME||'%'
UNION
SELECT T2.ID, T2.NAME, T2.FIELD1, T2.FIELD2, T2.FIELD3
FROM T2
ORDER BY ID
INSERT INTO T2 ([NAME], FIELD1, FIELD2, FIELD3)
SELECT T1.NAME, FIELD1, FIELD2, FIELD3
FROM T2 LEFT JOIN T1 ON T1.NAME LIKE CONCAT("%", T2.NAME ,"%")
मुझे लगता है कि आपकी समस्या इस तथ्य के कारण है कि 'RED T'
like
'RED'
नहीं है
तुम कोशिश कर सकते हो
Insert into T1
Select ID, Name, Field1, Field2, Field3 From T2 a
Left Join T1 b
On a.Name like ('%' + b.name + '%')
...लेकिन यह सामान्य नहीं है या कम से कम यह उन सभी मामलों से मेल नहीं खा सकता है जिनकी आप अपेक्षा करेंगे। जैसा कि अन्य ने कहा है कि आपको "समान" से क्या मतलब है, आपको अधिक स्पष्ट रूप से निर्दिष्ट करना चाहिए।
नीचे संभावित क्वेरी होगी
Insert into T1 (ID, Name, Field1, Field2, Field3)
Select t.ID, t.Name, t2.Field1, t2.Field2, t2.Field3
From T1 t Left outer join T2 t2 on
substring(t.Name,1,CHARINDEX(' ', t.Name))=t2.Name
संभावित सिंटैक्स बेमेल के लिए क्षमा याचना क्योंकि मैंने इसे निष्पादित नहीं किया और फ़ोन के माध्यम से समाधान में प्रवेश किया
मैंने जो समाधान प्रस्तावित किया है वह इस धारणा पर आधारित है कि T1 में मेल खाने वाला रंग पहला भाग होना चाहिए फिर एक स्थान और अंत में अंतिम भाग होना चाहिए
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।