我的table看起来像这样
ID - col1 - col2
=====================
1 - 115 - 3
2 - 3 - 115
3 - 110 - 121
4 - 12 - 115
5 - 115 - 121
6 - 115 - 65
我想选择所有行 col1 = 115
它将输出一个简单的表,所有行匹配115,所以我做了
SELECT * from myTable WHERE col1= 115
这是最简单的部分。现在,同时,我需要标记所有与本例中相反值匹配的行`
3和115,给定115和3也存在
并不是说我不会“标记”12 | 115,因为115 | 12不存在
所需输出应为
ID - col1 - col2 - mark
========================
1 - 115 - 3 - true
5 - 115 - 121 - false
6 - 115 - 65 - false
我希望我说清楚了`
1条答案
按热度按时间unhi4e5o1#
您需要将表连接到自身,称为“自连接”。查询返回表的第一个示例中的所有数据,但只联接与第一个示例相反的第二个示例中的记录。因此,如果存在反向匹配,则所有联接列中都将有数据,如果不存在反向匹配,则id、col1和col2将在联接列上返回null数据。然后,使用“if”语句在连接的数据上查找空值。参见下面的代码:
注意,我们在join中匹配col1和col2,这会得到相反的数字。
我用来设置测试的代码: