मेरे पास निम्न तालिकाएँ हैं और यदि नाम समान है तो उसी तालिका से कॉपी करके तालिका 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
1
John 25 अक्टूबर 2017, 23:58

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
0
indiri 26 अक्टूबर 2017, 01:12
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 ,"%")
1
June7 26 अक्टूबर 2017, 00:25

मुझे लगता है कि आपकी समस्या इस तथ्य के कारण है कि '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 + '%')

...लेकिन यह सामान्य नहीं है या कम से कम यह उन सभी मामलों से मेल नहीं खा सकता है जिनकी आप अपेक्षा करेंगे। जैसा कि अन्य ने कहा है कि आपको "समान" से क्या मतलब है, आपको अधिक स्पष्ट रूप से निर्दिष्ट करना चाहिए।

0
C.Champagne 26 अक्टूबर 2017, 00:18

नीचे संभावित क्वेरी होगी

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 में मेल खाने वाला रंग पहला भाग होना चाहिए फिर एक स्थान और अंत में अंतिम भाग होना चाहिए

0
Mudassar 26 अक्टूबर 2017, 00:36