获取不在现有表中的ID和日期

时间:2019-03-07 05:58:07

标签: mysql sql

我有两个包含ID, Date, var1, var2 ...的表,依此类推。

我使用以下查询将IDTable2拉到Table1,其中ID不在Table1中。

INSERT INTO [192.168.0.241].mvdsc1302.dbo.patient_reg
SELECT *
FROM   [192.168.36.36].mvdsc1302.dbo.patient_reg a
WHERE  a.patient_id NOT IN (SELECT patient_id
                            FROM   [192.168.0.241].mvdsc1302.dbo.patient_reg
                            WHERE  patient_id = a.patient_id)  

以上代码将新的IDs提取到Table1。 我还需要一个条件,如果我需要拉ID中已经存在但table1 date的新输入ID的{​​{1}},该怎么办?

3 个答案:

答案 0 :(得分:1)

那是你想要的吗?

REPLACE INTO [192.168.0.241].mvdsc1302.dbo.Patient_Reg
SELECT *
FROM [192.168.36.36].MVDSC1302.DBO.Patient_Reg a
WHERE NOT EXISTS
    (SELECT *
     FROM [192.168.0.241].mvdsc1302.dbo.Patient_Reg b
     WHERE b.patient_id=a.patient_id
       AND b.Date=a.Date)

答案 1 :(得分:0)

请尝试这个。

除了Patient_ID

INSERT INTO [192.168.0.241].mvdsc1302.dbo.Patient_Reg
SELECT * FROM [192.168.36.36].MVDSC1302.DBO.Patient_Reg a
Where a.patient_id  NOT IN (SELECT DISTINCT patient_id  FROM [192.168.0.241].mvdsc1302.dbo.Patient_Reg)

除了Patient_id和Date

     INSERT INTO [192.168.0.241].mvdsc1302.dbo.Patient_Reg
            SELECT * FROM [192.168.36.36].MVDSC1302.DBO.Patient_Reg a
            Where a.patient_id  NOT IN (SELECT DISTINCT patient_id  FROM [192.168.0.241].mvdsc1302.dbo.Patient_Reg)
   AND a.DATE NOT IN (SELECT DISTINCT DATE FROM [192.168.0.241].mvdsc1302.dbo.Patient_Reg)

答案 2 :(得分:0)

尝试一下:

INSERT OR REPLACE INTO [192.168.0.241].mvdsc1302.dbo.Patient_Reg
SELECT *
FROM [192.168.36.36].MVDSC1302.DBO.Patient_Reg a
WHERE NOT EXISTS
(SELECT * FROM [192.168.0.241].mvdsc1302.dbo.Patient_Reg b
WHERE b.patient_id=a.patient_id AND b.Date=a.Date)