我将如何通过SQL查询达到以下要求

时间:2019-05-19 08:05:33

标签: sql sql-server stored-procedures

我有以下表格

table1

table1_id        name      
1                abc          
2                cde            
3                efg           

table2

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是我根据表1的名称列接收的值

i,e:获取字符串中键6的值:>

select table2.value by join 2 table on id where name="abc"

next:通过>

获取键8的值
select table2.value join 2 table on id where name="cde" 

以此类推

1 个答案:

答案 0 :(得分:0)

您似乎想要这样的东西:

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