gpt4 book ai didi

sql选择同一个表中的查询

转载 作者:行者123 更新时间:2023-12-04 15:01:30 25 4
gpt4 key购买 nike

我有一个 newby sql 相关问题。

假设我有这个简单的表:

A      B
------ ------
a b
a c
b a
m n
m o
n m

我想查询只有“对应物”的记录,即我想得到 a b仅当存在 b a在表格中,但我想跳过“反向链接”(这里是 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 数据库。

最佳答案

您可以将最后一行更改为:

AND x1.A < x1.B

这假设您的列从不自引用(例如:a,a),或者您不希望出现循环引用。如果你这样做,那么:
AND x1.A <= x1.B

编辑:

您最好也使用显式连接:
SELECT DISTINCT 
x1.A
, x1.B
FROM
TEST x1
JOIN
TEST x2
ON x1.A = x2.B
AND x1.B = x2.A -- all records /w counterparts only
WHERE x1.A < x1.B --Skip backreference

关于sql选择同一个表中的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com