sql - 如何使用 sql 查询实现以下要求
问题描述
我有以下表格
表格1
table1_id name
1 abc
2 cde
3 efg
表2
table2_id(fkey) value
1 10
2 19
3 50
这里表 2 外键引用表 1 的 id。我查询时想要以下字符串格式6:10,8:19,5:50
以上 6,8 和 5 是我定义的常量(可以硬编码),其中 10、19,50 是我根据 table1 的名称列收到的值
i,e: 获取字符串中键 6 的值:>
select table2.value by join 2 table on id where name="abc"
下一步:获取键 8 的值是 by>
select table2.value join 2 table on id where name="cde"
等等
解决方案
你似乎想要这样的东西:
select stuff( (select concat(',', v.val, ':', t2.value)
from table2 t2 join
table1 t1
on t2.table2_id = t1.table1_id join
(values ('abc', 6), ('cde',8 ), ('efg', 5)
) v(name, val)
on v.name = t1.name
for xml path ('')
), 1, 1, '')
没有 的子查询for xml path
会产生您想要的对。for xml path
仅用于字符串聚合。
推荐阅读
- android - 提高 wrap_content height recyclerview 的性能
- fortran - 派生类型中的参数化过程
- android - objectbox 预填充数据库批量插入
- java - 使用 Gson 将带有嵌套 Map 的 java 类写入自定义 json 格式
- python - 对列进行分组并识别不属于该组的值
- javascript - 如何修改此功能使其也按日期排序?
- xmlhttprequest - IE上子域之间的CORS问题
- elasticsearch - 无法访问 kibana 仪表板
- deployment - .NET 4.7.2 的 VS2017 安装项目
- android - 以后可以在华为AppGallery Connect中编辑/更改我的项目的包名吗?