首页 > 解决方案 > 比较 2 列并仅查找唯一值

问题描述

如果我的格式不好,请提前道歉,这里是新的。

我试图仅从同一个表中的 2 个单独的列中获取唯一值。例如:https ://i.stack.imgur.com/SKZjT.png

将 column1 与 column2 进行比较时,我想获得结果 g

将 column2 与 column1 进行比较时,我想获得结果 h

我正在尝试实现这个逻辑,但它不起作用,任何建议将不胜感激!

SELECT column1 FROM list WHERE column1!=column2

编辑1:

这是我正在使用的实际数据集:https ://i.stack.imgur.com/VfOU5.png

基本上我正在编写一个小程序来检查我关注的账户是否也是关注者(反之亦然,但那是以后的事了)

这是我正在尝试但仅打印出 [] 的代码(如下所示):

# Open datas.db file for SQLite
db = cs50.SQL("sqlite:///datas.db")

followeronly = db.execute("SELECT followers FROM lists WHERE followers NOT IN(SELECT following FROM lists)")
print(followeronly)

对困惑感到抱歉!

标签: sqlite

解决方案


查询中的 WHERE 子句一次只计算单行中的列。所以对于第一行,WHERE 子句比较 a != h,这是真的,并且该行被添加到结果集中。这也发生在所有其他行上,因为 column1 在任何行中都不会等于 column2。所以所有行都被返回。每次评估行的 column1 时,都需要检查 column1 是否存在于任何行的 column2 中。

获得所需内容的一种可能方法是将 IN 与 WHERE 子句中的嵌套查询进行比较:

SELECT column1 FROM list WHERE column1 NOT IN (SELECT column2 FROM list)

推荐阅读