有个SQL的问题,希望给个语句。

小鑫o 发布于 2013/01/29 22:53
阅读 346
收藏 1

表结构:

期望查询结果:

ID NAME
1 张三
2 李四
3 王五

求SQL语句。

加载中
0
八宝旗
八宝旗

SELECT  GROUP_CONCAT((CASE WHEN `code`="ID" THEN `value` ELSE '' END) SEPARATOR '') AS 'ID' 

, GROUP_CONCAT((CASE WHEN `code`="NAME" THEN `value` ELSE '' END ) SEPARATOR '') AS 'NAME' 

, GROUP_CONCAT((CASE WHEN `code`="AGE" THEN `value` ELSE '' END ) SEPARATOR '') AS 'AGE' 


FROM  `tablename` AS a


GROUP BY  a.type;


如果有新增的按照这个模式增加就行
GROUP_CONCAT((CASE WHEN `code`="***" THEN `value` ELSE '' END ) SEPARATOR '') AS '***' 
小鑫o
小鑫o
好难啊,理解不上去啊,哈哈!
0
leo108
leo108
1和张三有啥联系?为什么不是2-张三
小鑫o
小鑫o
少加了一列,说明他俩关系的,
0
八宝旗
八宝旗

一个比较笨的sql,纯粹是为了针对这种表结构解决需求

SELECT (CASE WHEN `code`="ID" THEN `value` ELSE `type` END ) AS 'ID' 

, (CASE WHEN `code`="NAME" THEN `value` ELSE `type` END ) AS 'NAME' 

FROM  table

HAVING `ID`!=`NAME`;

小鑫o
小鑫o
格式乱了。
小鑫o
小鑫o
那不只两行的时候该怎么做? ID 2 2 NAME 李四 2 ID 3 3 NAME 王五 3 ID 1 1 NAME 张三 1 AGE 15 1 AGE 20 2 AGE 25 3 期望结果 ID NAME AGE 1 张三 15 2 李四 20 3 王五 25
小鑫o
小鑫o
感谢您的回答,结果是正确的!
0
海川
海川

分2不,先查出ID行变列。再查出名称行变列,然后2个结果集合并

小鑫o
小鑫o
弄出来了。谢谢。
小鑫o
小鑫o
可以给个语句么。
0
polly
polly
select t1.value ID,t2.value NAME from t_youtable t1
left join t_youtable t2
on t1.type=t2.type
where t1.code='ID' and t2.code='NAME'
小鑫o
小鑫o
感谢您的回答,那请问,如果我的ID和NAME是关联到其他的表的,并且可能还会继续增加,例如增加个AGE,SEX等,我需要无限的写么。?
0
狮子暴走
狮子暴走
你的表好奇怪啊 为什么不直接设计成 id name 这种个格式的表呢 
polly
polly
看起来他想保存一个key-value的数据
0
LBM
LBM

--表名为customer

select a.value, b.value from customer as a join customer as b on a.type=b.type and a.code<>b.code and a.code <>'NAME'

0
Jewel_M
Jewel_M
这一张表说明不了什么   应该还有一张表 或者这个表差字段...
0
scott_tang
scott_tang
SELECT
  max(DECODE(CODE, 'ID', VALUE, NULL)) ID,
  max(DECODE(CODE, 'NAME', VALUE, NULL))  NAME  
  FROM customer
  GROUP BY TYPE;

返回顶部
顶部