加入几个字段,只筛选真正不同的行
我有两个表,每个表有4个字段。 A crc
,title
,parent
和parent_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
。这是我很感兴趣的一个
如果我理解你的问题正确,你需要的是在混合排除那些谁没有改变加左连接...见下文:
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;
让我检查我的真实数据。 – alexandernst
它似乎没有工作。请注意箭头指向的元素上“父”的更改:https://imagebin.ca/v/3dgU4CXIylpu – alexandernst
这是回答您的问题吗? https://*.com/questions/5676559/how-to-write-not-in-sql-query-using-join – Nosajimiki
@Nosajimiki号我已经知道如何加入(实际上,我提供的链接我目前的进度已经这样做了)。我所要求的困难是“多重连接与不同”。 – alexandernst
根据你的数据,一个文件可以同时在两个地方。那是对的吗? –