【发布时间】:2020-05-04 07:05:30
【问题描述】:
我有一个 Paths 表,其中包含 PathID(唯一)和 PathStr 列。
我想获取此表中所有以字符串开头的 PathStr 记录,这些记录来自选定的 PathID。
换句话说,如果我知道根文件夹的PathID,我想获取一个文件夹的所有子文件夹。
示例表:
PathID | PathStr
-------+------------------------
1 | D:\Project1
2 | D:\Project1\Sub1
3 | D:\Project1\Sub1\Sub11
4 | D:\Project2
5 | D:\Project2\Sub1
PathID = 1: 时所需的结果:
D:\Project1
D:\Project1\Sub1
D:\Project1\Sub1\Sub11
我的查询现在看起来像这样,但我坚持使用WHERE 的子查询:
SELECT P.PathStr As 'Folder'
FROM Paths AS P
WHERE P.PathStr LIKE (SELECT Paths.PathStr FROM Paths WHERE Paths.PathID = 1) + "%"
我想我不能简单地将子查询的结果与字符串连接起来,但我不知道该怎么做,我没有找到我朋友 google 的解决方案:)
子查询的结果总是一条记录。
谢谢
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
-
@GordonLinoff 不幸的是我不知道:/
-
那么,您的查询是否有效?如果没有,你会收到错误吗?哪一个? (顺便说一句,您混淆了引号。在标准 SQL 中,单引号用于字符串(如
'%'),双引号用于名称(如"Folder")。标准字符串连接运算符是||,而不是+,但一些 DBMS(SQL Server 是最突出的)使用+。其他人仍然使用CONCAT函数。 -
您不知道您使用的是哪个 DBMS?您不知道您使用的是 Oracle 还是 MySQL 或 SQL Server 或其他什么?那你怎么知道有哪些操作和功能可用以及参考哪些手册或在线文档?你如何连接到数据库?
-
@ThorstenKettner 这是一个项目数据管理软件。我是用户,不是管理员或 IT 人员,但我可以运行查询(称为报告)。不幸的是,它的文档很差。
标签: sql subquery concatenation