我有一张表格如下:
A 栏 | B 栏 | 重量 |
---|---|---|
A | B | 2 |
B | A | 2 |
C | D | 4 |
D | C | 4 |
A | D | 2 |
A | G | 2 |
这些代表无向网络。由于网络是无向的,因此第 1 行和第 2 行相同。还有第 3 行和第 4 行。
我如何查询该表以获得以下结果:
A 栏 | B 栏 | 重量 |
---|---|---|
A | B | 2 |
C | D | 4 |
A | D | 2 |
A | G | 2 |
我尝试了很多查询,但找不到有用的查询。
根据你的故事,怎么样:
create table stackoverflow.table1 (
columnA STRING,
columnB STRING,
weight INTEGER
);
INSERT INTO stackoverflow.table1 VALUES
("A", "B", 2),
("B", "A", 2),
("C", "D", 4),
("D", "C", 4),
("A", "D", 2),
("A", "G", 2);
with temp as (
select *, ROW_NUMBER() OVER (PARTITION BY
IF(columnA < columnB,
columnA || ":" || columnB,
columnB || ":" || columnA)
) as rn from stackoverflow.table1
)
select * except(rn) from temp where rn = 1