gpt4 book ai didi

Sqlite:选择,加入使用类似的加入字段

转载 作者:行者123 更新时间:2023-12-03 18:49:11 27 4
gpt4 key购买 nike

这是在 sqlite 3 中
我在一个表中有位置编号和地址(存储为 CHAR)
我在另一个表中有设备名称和其他详细信息,其中设备名称存储为 CHAR,位置编号是子字符串或与设备名称相等

我希望能够选择所有位置并计算位于该位置的设备数量,按位置编号分组

这是我用的

SELECT v.[TransitNumber],DeviceName,count(NeighborName) from Neighbors n
left join VirtualControllers v on v.TransitNumber like '%'+n.DeviceName+'%'
group by DeviceName

这返回 Null 作为运输号码的值,我不明白为什么

这是一些数据

TransitNumber   DeviceName  count(NeighborName)  
712bs1 2
712bs2 2

在这种情况下,传输号码应该是 712(顺便说一句,我实际上是在计算每台设备连接了多少台 PC,但我想知道该位置有多少台 PC
结果应该是

TransitNumber   count(NeighborName)
712 4

这是一些数据示例和我想要实现的目标

    Neighbours table

DeviceName Interface NeighbourName
us712bs1 fa0/1 PC1
us712bs1 fa0/2 PC2
us712bs2 fa0/1 PC3
us712bs2 fa0/2 PC4


VirtualCotroller table

TransitNumber Address
712 New York, TimeSquare


Expected result

TransitNumber PCs
712 4

最佳答案

Here是你想要什么的 fiddle 。

我将其保留为左外连接,因为这意味着对于没有邻居的 VirtualController,您将获得零计数(而不是仅仅排除缺失的行 - 如果您想排除它们,请将其更改为内连接)

主要问题是您在 LIKE 中的串联,SQLite 使用双管道 ||对于字符串连接不是 +。

在上面的 fiddle 中有两个选择,第一个给出你要求的,计数为 4。第二个也按设备名称分组,以防你想看到两者之间的区别。

你的 SQL 结果如下:

SELECT TransitNumber, DeviceName, COUNT (NeighbourName)
FROM VirtualController V
LEFT OUTER JOIN Neighbours N ON N.DeviceName LIKE '%' || V.TransitNumber || '%'
GROUP BY TransitNumber;

关于Sqlite:选择,加入使用类似的加入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com