首页 > 解决方案 > 如何使用 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" 

等等

标签: sqlsql-serverstored-procedures

解决方案


你似乎想要这样的东西:

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仅用于字符串聚合。


推荐阅读