将多个SQL字段合并到一个输出行中
有一个SQL表,比如 用户标识|属性|值将多个SQL字段合并到一个输出行中,sql,mysql,Sql,Mysql,有一个SQL表,比如 用户标识|属性|值 1 |用户名|马吕斯 1 |密码| Fubar 我想创建如下输出: 1 |马吕斯|福巴 也许我只是太累了,看不到它,听起来不太复杂,但我似乎无法理解它。感谢您的帮助。编辑: 每个结果一列: 如果您尝试将多个属性与同一个用户标识组合在一起,则如下所示: 短查询(一个用户标识): 使用示例数据生成结果: 1 | Marius | Fubar 完整查询(所有用户ID) 您可能需要一个排序字段来按请求的顺序获取参数 多列 如果希望获得具有多列的表,则数据需要具
1 |用户名|马吕斯
1 |密码| Fubar 我想创建如下输出: 1 |马吕斯|福巴 也许我只是太累了,看不到它,听起来不太复杂,但我似乎无法理解它。感谢您的帮助。编辑: 每个结果一列: 如果您尝试将多个属性与同一个用户标识组合在一起,则如下所示: 短查询(一个用户标识): 使用示例数据生成结果:
1 | Marius | Fubar
完整查询(所有用户ID)
您可能需要一个排序字段来按请求的顺序获取参数
多列
如果希望获得具有多列的表,则数据需要具有相等的属性计数。你还需要注意订货
在这种情况下,您可以选择带有group by的硬编码查询。类似于
SELECT userID,
GROUP_CONCAT (Value SEPARATOR '|')
FROM my_table
GROUP BY UserID;
成为您想要的吗?为什么不使用自联接,即:
select u1.userid, u1.value, u2.value
from yourtable u1
inner join yourtable u2 on u2.userid=u1.userid
where u1.attribute='Username' and u2.attribute='Password';
如果这样保存数据,则需要执行交叉表查询并将行转换为列。如果您使用的是Microsoft SQL Server,请查看联机丛书中的“交叉表查询”和pivot运算符。抱歉,这些向下斜杠只是用来分隔列。我的问题是,我希望两行或更多行中的字段在一行中返回,但这是您需要做的-只需将下斜杠与您想要的内容交换即可。您以前没有提到这个事实。所以-您需要一个两列表还是多列表?第二个很难。您需要执行多个查询才能完成此任务。例如,sql while和按用户ID分组。请编辑您的问题以反映这些细节。在我的场景中非常简短且有效的解决方案,非常感谢!
rownum|UserID|ConcatTex
1 | 1 |1|attr1|attr2|attr3
2 | 2 |2|attr4
DROP TABLE #users
SELECT userID,
GROUP_CONCAT (Value SEPARATOR '|')
FROM my_table
GROUP BY UserID;
select u1.userid, u1.value, u2.value
from yourtable u1
inner join yourtable u2 on u2.userid=u1.userid
where u1.attribute='Username' and u2.attribute='Password';