我有一个这样的表:
id status time days ...
1 optimal 60 21
2 optimal 50 21
3 no solution 60 30
4 optimal 21 31
5 no solution 34 12
.
.
.
还有更多的行和列。我需要进行一个查询,在给定两个ID的情况下,返回哪些列具有不同的信息。重新表述它,我将提供两个ID,例如1和5,并且我需要知道这两行是否有具有不同值的列。在这种情况下,结果应该类似于:
id status time days
1 optimal 60 21
5 no solution 34 12
例如,如果我提供ID 1和2,结果应该是:
id time
1 60
2 50
输出格式不需要这样,它只需要清楚地显示哪些列不同以及它们的值
我可以马上告诉您,用某种编程语言处理这些数据将极大地帮助您实现这种解决方案的简单性和可读性,但这里有一个关于如何在SQL中实现的线索。
比较两行并识别值不同的列
如果你正在R中寻找解决方案。这是我的解决方案:
df <- read.csv(file = "sf.csv", header = TRUE)
diff.eval <- function(first.id, second.id, eval.df) {
res <- eval.df[c(first.id, second.id), ]
cols <- colnames(eval.df)
for (col in cols) {
if (res[1, col] == res[2, col]) {
res[, col] <- NULL
}
}
return(res)
}
print(diff.eval(1, 5, df))
print(diff.eval(1, 2, df))
您只需要从表中创建一个数据帧。我只是在本地创建了一个.csv
,并通过导入到数据帧中来使用数据。