从sql表中选择值对

我有一个包含3列的SQL表:“从点”,“到点”和“点之间的距离”。特定的一对点始终只有一个距离。

| from | to  | distance |
|-----------------------|
|  1   | 2   |   15     |
|  1   | 3   |   20     |
|  1   | 4   |   2      |
|  3   | 2   |   16     |
|  4   | 2   |   48     |
|  5   | 2   |   12     |
|  3   | 4   |   19     |
|  3   | 5   |   55     |
|  4   | 5   |   18     |

现在,我有了一个点列表,例如,我想获取这些点之间的距离:

ids = [1, 2, 4]

我想返回这些点之间的所有距离:

1-2 -> 15
1-4 -> 2 
2-4 -> 48

我已经在python中编写了一些代码来获取这些配对

    pairs=[]
    for a in ids:
        for b in ids:
            if a != b and sorted([a,b]) not in trasy:
                pairs.append(sorted([a,b]))
                print(sorted([a,b]))

我可以向SQL请求以获取距离,但是这样每对都会有一个新的查询,并且ID列表可以更长(例如目前最多50个元素),我认为这不是一个好方法。

我在SQL方面还很新,但是我相信有一些更简单的方法,用一个查询就能很好地解决所有问题

克林

您可以像这样在单个查询中获取对:

with points(point_from, point_to, distance) as (
values
    (1, 2, 15),
    (1, 3, 20),
    (1, 4, 2),
    (3, 2, 16),
    (4, 2, 48),
    (5, 2, 12),
    (3, 4, 19),
    (3, 5, 55),
    (4, 1, 68),
    (4, 5, 18)
)

select least(point_from, point_to) as "from", greatest(point_from, point_to) as "to", distance
from points
where point_from in (1, 2, 4) and point_to in (1, 2, 4)

 from | to | distance 
------+----+----------
    1 |  2 |       15
    1 |  4 |        2
    2 |  4 |       48
    1 |  4 |       68
(4 rows)    

特定的一对点始终只有一个距离。

嗯,我不这么认为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL从多个表中选择值

来自分类Dev

如何从sql表的xml列中选择值

来自分类Dev

SQL-从单独表的列值中选择记录计数

来自分类Dev

使用 sql 从表中选择最新的消息线程值

来自分类Dev

SQL 从多个表中选择以显示甚至空值

来自分类Dev

在表中选择不同的值

来自分类Dev

从参考表中选择值

来自分类Dev

SQL查询基于列值从3个选项中选择并从其他表中选择

来自分类Dev

SQL-从表中选择*

来自分类Dev

SQL-从表中选择*从

来自分类Dev

在SQL中选择不同的值对

来自分类Dev

在SQL中选择不同的值对

来自分类Dev

在 SQL 中选择不同的值

来自分类Dev

从 Temp 表中选择时在 SQL 中选择

来自分类Dev

通过从多个表SQL中选择值来更新表

来自分类Dev

从SQL表中选择一个表的最高值

来自分类Dev

通过从多个表SQL中选择值来更新表

来自分类Dev

SQL:从表中选择全部,其中相关表没有指定的字段值

来自分类Dev

从SQL表中选择随机数,该表均匀地分布在列的不同值上

来自分类Dev

SQL:从不包含来自另一个表的值的表中选择数据

来自分类Dev

用于从条件来自相关表的表中选择值的 SQL 查询

来自分类Dev

Sql从表中选择但使用另一个表值作为where子句

来自分类Dev

SQL从两个值不同的表中选择行,包括空值

来自分类Dev

如何从嵌套表中选择列值

来自分类Dev

每行从表中选择的TSQL随机值

来自分类Dev

从表中选择列名称和值

来自分类Dev

从多个表中选择所有值

来自分类Dev

从多个表中选择多个值的计数

来自分类Dev

从表中选择,其中column =任何值