假设我使用SQLite查询语法。
我有一张点之间的距离表:
CREATE TABLE d (
p1 INT,
p2 INT,
distance REAL
);
如果我知道p1
和p2
之间的距离,那么我知道p2
和p1
之间的距离 - 这两行都在表格中。
我想为所有独特的三元组创建一个视图(select
查询),以便我知道所有这三个点之间的距离成对。
我尝试了以下内容:
CREATE VIEW triple as
select d1.p1 as p1, d2.p1 as p2, d3.p1 as p3
from d as d1, d as d2, d as d3
where d1.p1=d3.p2 and d1.p2=d2.p1 and d2.p2=d3.p1;
但我不知道如何摆脱像:
这样的换位1 | 2 | 3
2 | 3 | 1
3 | 1 | 2
对于我的观点,什么是快速且正确的select
查询?
答案 0 :(得分:1)
如果您有所有对,则可以使用成对比较。这是一种方法:
CREATE VIEW triple as
select d1.p1 as p1, d2.p1 as p2, d3.p1 as p3
from d d1 join
d d2
on d1.p2 = d2.p1 join
d as d3
on d1.p1 = d3.p2 and d2.p2 = d3.p1
where d1.p1 < d1.p2 and d3.p1 < d3.p2;