SQL查询,返回给定两行的哪些列具有不同的值

  • 本文关键字:两行 返回 查询 SQL sql sqlite
  • 更新时间 :
  • 英文 :


我有一个这样的表:

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,并通过导入到数据帧中来使用数据。

最新更新