mysql - 试图在mysql中连接三个不同的行
问题描述
所以,我有一个属性表,我正在尝试构建一个查询以连接到一列
attributes
------------
id, c_id, key, value
1, 1, 'day', 11
2, 1, 'month', 09
3, 1, 'year', 1999
4, 2, 'day', 14
5, 2, 'month', 11
6, 2, 'year', 2004
这是我写的查询,
SELECT
consumer_id,
CONCAT(
(SELECT `value` FROM consumer_attributes WHERE `key` = 'select_day'),
'_',
CONCAT(
(SELECT `value` FROM consumer_attributes WHERE `key` = 'select_month'),
'_',
CONCAT(
(SELECT `value` FROM consumer_attributes WHERE `key` = 'select_year'),
'',
''
)
)
) AS dob
FROM consumer_attributes
它抛出
错误代码:1242 子查询返回多于 1 行
有人可以帮我吗?
我试图实现的输出
consumer_id, concat
1, 11_09_1999
2, 14_11_2004
解决方案
SELECT c_id, CONCAT_WS('_',
(SELECT value FROM consumer_attributes a WHERE `key`='day' AND a.c_id = c.c_id),
(SELECT value FROM consumer_attributes a WHERE `key`='month' AND a.c_id = c.c_id),
(SELECT value FROM consumer_attributes a WHERE `key`='year' AND a.c_id = c.c_id)) AS dob
FROM (SELECT DISTINCT c_id FROM consumer_attributes) c;
推荐阅读
- python - 我怎样才能通过附加值以指数方式增加每个下一个对象部分?
- azure - Azure Service Fabric 本地部署导致 DnsService 错误:DnsService UDP 侦听器无法启动
- r - 在 R 中导入新的文件类型
- android - Applozic 与 google firebase 身份验证
- r - dplyr::row_number() 是否计算每个 obs 的行号?如果是这样,怎么做?
- r - 如何评估 ARIMA 预测图的趋势,因为它逐渐变为水平?
- json - 如何在 SQL Server 2017 中对简单 Json 数组执行 Where 子句?
- python - 逐行读取文件并在python中搜索模式
- ckeditor - 使用 CKFinder 上传图像时出现 405(不允许的方法)
- javascript - 冲突的@Dragenter @Dragleave / v-show 事件不断快速触发