我有一张这样的 table :
id | node_source | node_destination | path
1 | 1 | 0 | {"coordinates": [[-6.27400693507...
2 | 0 | 1 | {"coordinates": [[-6.24568104953...
3 | 1 | 2 | {"coordinates": [[-6.24568104953...
4 | 2 | 1 | {"coordinates": [[-6.27230059993...
我想比较第 1 行和第 2 行、第 3 行和第 4 行之间的 node_source 和 node_destionation 的值。
如果 node_source in row 1 == node_destination in row 2 AND node_destination in row 1 == node_source in row 2 THEN display only first row (id=1)
如果 node_source in row 3 == node_destination in row 4 AND node_destination in row 3 == node_source in row 4 THEN display only third row (id=3)
最终输出如下:
id | node_source | node_destination | path
1 | 1 | 0 | {"coordinates": [[-6.27400693507...
3 | 1 | 2 | {"coordinates": [[-6.24568104953...
这是我的代码(但不起作用):
SELECT * FROM graph t1
WHERE NOT EXISTS(SELECT * FROM graph t2
WHERE t2.node_source = t1.node_destination AND t2.node_destination = t1.node_source
)
帮助。 谢谢。
最佳答案
我想你想要这个:
SELECT g.*
FROM graph g
WHERE g.node_source <= g.node_destination
UNION ALL
SELECT g.*
FROM graph g
WHERE g.node_source > g.node_destination AND
NOT EXISTS (SELECT 1
FROM graph g2
WHERE g2.node_source = g.node_destination AND g2.node_destination = g.node_source
);
这将选择每对边中的一个边。
关于MYSQL - 两列中的 WHERE 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42326917/