我有一个新手级别的与SQL相关的问题。
假设我有这个简单的表:
我想查询只有“对应项”的记录,即仅当表中存在b a时,才获取a b,但我想跳过“反向链接”(这里是b a)。 总之,我想得到以下结果。
这个 SQL 查询不起作用,因为在这种情况下,处理 b a 时, a b 会从我的结果集中移除。
“WHERE”子句的第二部分不能按预期工作。
你有什么提示吗?非常感谢你的任何帮助。
问候 彼得
附言:我正在使用Derby数据库。
假设我有这个简单的表:
A B
------ ------
a b
a c
b a
m n
m o
n m
我想查询只有“对应项”的记录,即仅当表中存在b a时,才获取a b,但我想跳过“反向链接”(这里是b a)。 总之,我想得到以下结果。
A B
------ ------
a b
m n
这个 SQL 查询不起作用,因为在这种情况下,处理 b a 时, a b 会从我的结果集中移除。
SELECT DISTINCT x1.A, x1.B
FROM TEST x1, TEST x2
WHERE x1.A = x2.B AND x1.B = x2.A -- all records /w counterparts only
AND x1.A NOT IN (SELECT B from TEST where B = x1.A) -- skip the "back links"
“WHERE”子句的第二部分不能按预期工作。
你有什么提示吗?非常感谢你的任何帮助。
问候 彼得
附言:我正在使用Derby数据库。
b a
是a b
的反向链接。同样,a b
也是b a
的反向链接。你想选择保留哪一个并跳过哪一个? - fthiella