在 SQL Server 中,我可以在 Cursor 的帮助下完成此操作(循环遍历结果集中的每一行并构建我的字符串)。但我不知道如何在 SQLite 中做同样的事情,这个任务不像所谓的数据透视,据我所知,我们必须知道我们想要转换为列的确切行。我的情况有所不同,我想将指定列的所有值选择为一个字符串(然后可以选择为1行的列),该列可以有不同的值,具体取决于SELECT查询。这是它的外观示例:
A | B
------------
1 | 0
8 | 1
3 | 2
... ....
我想将 A 列的所有值选择为一个字符串,如“183...”(或“1,8,3,...”也可以)。
这可以用作另一个 SELECT 中的列,我必须实现它,因为我需要将所有子信息(在 A 列的每一行上)显示为另一行中的逗号分隔列表。
我对此没有任何想法,它似乎需要一些过程语句(例如放置在过程中),但 SQLite 对我如何使用循环、变量声明进行限制,...我真的陷入困境。这种任务在数据库编程时很常见,我没有理由拒绝这样做。
请帮忙,我们将非常感谢您的帮助!谢谢!
如果您只是想将 A 列中的所有值获取到单个记录中,请使用
GROUP_CONCAT
:
select group_concat(a, ',')
from yourtable
来自 内置聚合函数
group_concat() 函数返回一个字符串,该字符串是 X 的所有非 NULL 值的串联。如果存在参数 Y 然后它用作 X 实例之间的分隔符。逗号 (",") 如果省略 Y,则用作分隔符。
主要问题是你像应用程序员一样思考。 SQL 可以为您做很多事情。
SELECT *
FROM tableA
WHERE A IN (SELECT A
FROM tableB)
无需诉诸游标、存储过程和多个查询。