加入几个字段,只筛选真正不同的行

问题描述:

我有两个表,每个表有4个字段。 A crctitleparentparent_type加入几个字段,只筛选真正不同的行

这些表中的数据表示文件以及它们属于哪个实体。

具有相同CRC的文件可以属于多个实体。

第一个表代表一个时间点的快照,而第二个表代表另一个时间点的快照。

当文件“移动”(将其视为文件系统mv操作)时,parent和/或parent_type将会更改。

我想被感动快照A和快照B之间的文件列表

这是我目前有:http://sqlfiddle.com/#!5/89f0d4/1

注意file 1属于2周不同的父母。 file 4被添加/创建。 file 2已从2 GRUP移至3 GRUP。这是我很感兴趣的一个

+0

这是回答您的问题吗? https://*.com/questions/5676559/how-to-write-not-in-sql-query-using-join – Nosajimiki

+0

@Nosajimiki号我已经知道如何加入(实际上,我提供的链接我目前的进度已经这样做了)。我所要求的困难是“多重连接与不同”。 – alexandernst

+1

根据你的数据,一个文件可以同时在两个地方。那是对的吗? –

如果我理解你的问题正确,你需要的是在混合排除那些谁没有改变加左连接...见下文:

select a.* 
    from memarxiu a 
    join arxiu b 
    on b.crc = a.crc 
    left join (select * 
       from arxiu) c 
    on c.crc = a.crc 
    and c.parent = a.parent 
    and c.parent_type = a.parent_type 
    where a.title = b.title 
    and (a.parent <> b.parent 
    or a.parent_type <> b.parent_type) 
    and c.crc is null; 
+0

让我检查我的真实数据。 – alexandernst

+0

它似乎没有工作。请注意箭头指向的元素上“父”的更改:https://imagebin.ca/v/3dgU4CXIylpu – alexandernst