小编Jmy*_*nes的帖子

查询以获取3列中相同值且1中不同的行

我有一个包含大量数据的表,我需要获取IdMod,TableName和FieldName列在2行或更多行中匹配的行.

查询:

SELECT DISTINCT aa.Id, aa.IdMod, aa.TableName, aa.FieldName, aa.OldValue, aa.NewValue, aa.Origin, aa.Destination, aa.CreationDate, aa.Discard
FROM Process aa 
INNER JOIN (
            SELECT IdMod, TableName, FieldName
            FROM Process
            GROUP BY  IdMod, TableName, FieldName
            HAVING COUNT(*) > 1
            ) bb
ON aa.IdMod = bb.IdMod AND aa.TableName = bb.TableName AND aa.FieldName = bb.FieldName
WHERE Destination='All' OR Destination=@dest OR Origin=@dest
ORDER BY IdMod,TableName, FieldName
Run Code Online (Sandbox Code Playgroud)

有了这个查询,我得到它:

结果

但我想只有在Origin列不相同时才能得到它.我的意思是,在这个结果中我想得到除了第6行和第7行之外的所有内容,因为IdMod,TableName和FieldName匹配,但是Origin也匹配.同样的方式,我不想要第8行和第9行.但是,我想要第3,4和5行,因为它们中至少有一个具有不同的Origin.当然,我想要1和2,因为Origin不同.

我该怎么做?

sql sql-server

2
推荐指数
1
解决办法
52
查看次数

标签 统计

sql ×1

sql-server ×1