将多个SQL字段合并到一个输出行中

将多个SQL字段合并到一个输出行中,sql,mysql,Sql,Mysql,有一个SQL表,比如 用户标识|属性|值 1 |用户名|马吕斯 1 |密码| Fubar 我想创建如下输出: 1 |马吕斯|福巴 也许我只是太累了,看不到它,听起来不太复杂,但我似乎无法理解它。感谢您的帮助。编辑: 每个结果一列: 如果您尝试将多个属性与同一个用户标识组合在一起,则如下所示: 短查询(一个用户标识): 使用示例数据生成结果: 1 | Marius | Fubar 完整查询(所有用户ID) 您可能需要一个排序字段来按请求的顺序获取参数 多列 如果希望获得具有多列的表,则数据需要具

有一个SQL表,比如

用户标识|属性|值
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';