MYSQL - 两列中的 WHERE 值

标签 mysql sql database

我有一张这样的 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/

相关文章:

MySQL - 为什么我不能在这里添加外键?

php - MySQL - 专门的排序依据?

php - CodeIgniter 错误 - 无法使用提供的设置连接到数据库

backup - 如何从mysql备份恢复slave?

'' 附近的 MySQL 语法错误

带有汉字的MySQL数据类型

java - 非空约束失败

php - 使用单选按钮控件从 PHP 获取 mysql 数据

PHP,日期函数的使用

database - ORA-12528 : TNS Listener: all appropriate instances are blocking new connections. 实例 "CLRExtProc", 状态未知