sqlite—返回给定两行的哪些列具有不同值的sql查询

jjjwad0x  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(450)

我有一张这样的table:

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

例如,如果我提供ids 1和ids 2,结果应该是:

id   time 
1     60 
2     50

输出格式不需要这样,它只需要清楚地显示哪些列不同及其值

9nvpjoqh

9nvpjoqh1#

我可以马上告诉您,用某种编程语言处理这些数据将极大地帮助您解决这类解决方案的简单性和可读性问题,但这里有一个如何在sql中完成的线索。
比较两行并标识值不同的列

7vux5j2d

7vux5j2d2#

如果你在寻找解决方案。以下是我的解决方案:

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))

您只需要从表中创建一个Dataframe。我刚创建了一个 .csv 为了方便本地使用,可以通过导入Dataframe来使用数据。

相关问题