首页 / MYSQL / mysql – 在列中获取表行
mysql – 在列中获取表行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 在列中获取表行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1193字,纯文字阅读大概需要2分钟。
内容图文
![mysql – 在列中获取表行](/upload/InfoBanner/zyjiaocheng/892/de2a937fdb0446279495ce069bd06a11.jpg)
我想从我的桌子上得到一个特殊的结果,我想知道这是可能的!?
我有这样一个表:(idA,idB,val)这个值:
idA | idB | val ----+-------+---------- 1 | 5 | 50 1 | 6 | 0 1 | 7 | NULL 2 | 5 | 100 2 | 6 | 12 2 | 7 | 0
我希望通过以下格式从此表中选择:
idA | 5 | 6 | 7 ----+-------+-------+------- 1 | 50 | 0 | NULL 2 | 100 | 12 | 0
怎么可能?
注意:我有一些搜索但什么都没找到,如果你知道一个好的关键词对我有用.
解决方法:
您可以尝试以下查询:
SELECT idA
,GROUP_CONCAT(CASE WHEN idB = 5 THEN val ELSE NULL END) AS `5`
,GROUP_CONCAT(CASE WHEN idB = 6 THEN val ELSE NULL END) AS `6`
,GROUP_CONCAT(CASE WHEN idB = 7 THEN val ELSE NULL END) AS `7`
FROM MyTable
GROUP BY idA
如果你不知道idB的数量,你可以使用这个动态查询:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'GROUP_CONCAT(CASE WHEN `idB` = ''',
`idB`,
''' THEN val ELSE NULL END) AS `',
`idB`, '`'
)
) INTO @sql
FROM MyTable;
SET @sql = CONCAT('SELECT idA, ', @sql,'
FROM MyTable
GROUP BY idA
');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
输出:
| IDA | 5 | 6 | 7 |
---------------------------
| 1 | 50 | 0 | (null) |
| 2 | 100 | 12 | 0 |
内容总结
以上是互联网集市为您收集整理的mysql – 在列中获取表行全部内容,希望文章能够帮你解决mysql – 在列中获取表行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。