mysql选择字段,MySQL选择列名作为字段

I have a mysql table that looks something like this:

id | col_1 | col_2 | col_3

---|-------|-------|------

1 | 2 | 34 | 64

2 | 6 | 53 | 23

I would like to be able to query on the id and get multiple rows, one for each column. E.g:

SELECT column_name as column, column_value as value FROM my_table WHERE id=1;

Which would give me:

column | value

-------|-------

col_1 | 2

col_2 | 34

col_3 | 64

What would I need to use to formulate a query like this?

Many thanks

解决方案

This is called a pivot. Actually it's a reverse pivot. See here for some background. http://www.artfulsoftware.com/infotree/queries.php#78

MySQL does it the hard way. It's a pain in the neck. Many people who do lots of this kind of work in MySQL use programs to generate these queries.

SELECT `column`, column_value

FROM (

SELECT id, 'col_1' as `column`, col_1 as column_value FROM tab

UNION

SELECT id, 'col_2' as `column`, col_2 as column_value FROM tab

UNION

SELECT id, 'col_3' as `column`, col_3 as column_value FROM tab

) pivot

WHERE id=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值