Sql 在列内联接数据,而不是合并列
我有一个连接我想要的所有列的查询:Sql 在列内联接数据,而不是合并列,sql,sqlite,Sql,Sqlite,我有一个连接我想要的所有列的查询: select * from Customer c inner join Tier t on c.TierId = t.Id 但是,我不希望所有列合并。我希望有一个层列,然后在该列中有完整的层记录(因为我要映射到json,它必须是这种格式) 如何创建这样的子组 我试过: select *, Tier = (select * from Tier t where t.Id = c.TierId ) from Customer c inner join Tier t
select * from Customer c
inner join Tier t on c.TierId = t.Id
但是,我不希望所有列合并。我希望有一个层
列,然后在该列中有完整的层记录(因为我要映射到json,它必须是这种格式)
如何创建这样的子组
我试过:
select *, Tier = (select * from Tier t where t.Id = c.TierId ) from Customer c
inner join Tier t on c.TierId = t.Id
有人能指出正确的方向吗
编辑:
所以我想要这样的东西:
- CustomerID
- CustomerName
- CreatedDate
- Tier <-- all tier columns as a subgroup like when you group by
- TierId
- TierName
SELECT ("[" || column1 || ", " || column2 || "]") AS tier FROM Tier
-客户ID
-客户名称
-创建数据
-第层您是否只想从第层中选择一列?明确说明所需的列:
select t.tier, c.*
from Customer c inner join
Tier t
on c.TierId = t.Id;
看起来您需要的是sql。
查询的内容如下所示:
SELECT CONCAT("[", column1, ", ", column2, "]") AS tier FROM Tier
SQLite不支持CONCAT,因此必须像下面这样使用| |运算符:
- CustomerID
- CustomerName
- CreatedDate
- Tier <-- all tier columns as a subgroup like when you group by
- TierId
- TierName
SELECT ("[" || column1 || ", " || column2 || "]") AS tier FROM Tier
括号将在JSON中将其标记为数组,如果需要,可以将其删除
您还可以将columnname添加到结果中,只需将其作为字符串添加,以使其更精确
注意:您将无法像数组一样访问值,因为这只是将值合并到字符串中。选择层。*从…
?预期的输出应该是什么样的?抱歉,我使用的是SQLITE,所以您实际想要的是生成包含JSON对象的列?不,我正在使用的库应该能够将其转换为json,我只需要输入一个以正确结构返回数据的查询。我需要一个名为Tier的列,其中包含整个Tier rowunknown数据库函数Concatrue,我没有看到您使用SQLite并立即更新我的答案的编辑:)嗨,我更新了我的答案。我想选择所有列作为一个subgroup@Guerrilla . . . 我不知道SQL Server中存在这样的东西。您可以将它们组合为JSON字符串,也可以将它们组合在一起,或者使用命名约定。