在 SQLite 中将列中的所有值选择为字符串?

问题描述 投票:0回答:2

在 SQL Server 中,我可以在 Cursor 的帮助下完成此操作(循环遍历结果集中的每一行并构建我的字符串)。但我不知道如何在 SQLite 中做同样的事情,这个任务不像所谓的数据透视,据我所知,我们必须知道我们想要转换为列的确切行。我的情况有所不同,我想将指定列的所有值选择为一个字符串(然后可以选择为1行的列),该列可以有不同的值,具体取决于SELECT查询。这是它的外观示例:

A    |    B    
------------
1    |    0
8    |    1
3    |    2
...     ....

我想将 A 列的所有值选择为一个字符串,如“183...”(或“1,8,3,...”也可以)。

这可以用作另一个 SELECT 中的列,我必须实现它,因为我需要将所有子信息(在 A 列的每一行上)显示为另一行中的逗号分隔列表。

我对此没有任何想法,它似乎需要一些过程语句(例如放置在过程中),但 SQLite 对我如何使用循环、变量声明进行限制,...我真的陷入困境。这种任务在数据库编程时很常见,我没有理由拒绝这样做。

请帮忙,我们将非常感谢您的帮助!谢谢!

sql select sqlite system.data.sqlite
2个回答
12
投票

如果您只是想将 A 列中的所有值获取到单个记录中,请使用

GROUP_CONCAT
:

select group_concat(a, ',')
from yourtable

SQL Fiddle 演示

来自 内置聚合函数

group_concat() 函数返回一个字符串,该字符串是 X 的所有非 NULL 值的串联。如果存在参数 Y 然后它用作 X 实例之间的分隔符。逗号 (",") 如果省略 Y,则用作分隔符。


0
投票

主要问题是你像应用程序员一样思考。 SQL 可以为您做很多事情。

SELECT * 
  FROM tableA
 WHERE A IN (SELECT A 
                  FROM tableB)

无需诉诸游标、存储过程和多个查询。

© www.soinside.com 2019 - 2024. All rights reserved.