将一列拆分成几列

时间:2011-04-08 10:56:49

标签: mysql

Table name-userdb,
id |  name   |  value,
1  | fname   | anand,
1  | lname   | kumar,
1  |city     | bangalore,
2  |fname    |mahesh,
2  |lname    |sahoo,
2  |city     |manglore,
3  |fname    |anil,
3  |lname    |singh,
3  |city     |balasore..

我需要显示

fname  |  lname  |  city,
anand  |  kumar  | bangalore,
mahesh | sahoo   | manglore,
anil   |singh    |balasore,

为此请给我mysql查询

2 个答案:

答案 0 :(得分:0)

我强烈建议重组数据库,这不是处理请求的可行方法。

SELECT udb1.value as fname, udb2.value as lname, udb3.value as city
FROM `name-userdb` udb1
JOIN `name-userdb` udb2 ON udb1.id=udb2.id AND udb2.name='lname'
JOIN `name-userdb` udb3 ON udb1.id=udb3.id AND udb3.name='city'
WHERE udb1.name='fname';

再次!这是not正确的方法! 我只是在这里给出答案,因为它看起来类似于标签/过滤系统,有人可能需要答案。

答案 1 :(得分:0)

mmm .. EAVS ......除了实际实施标准化设计的明显建议之外,您可以实现您想要的目标:

Select Min( Case When name = 'fname' Then value End ) As fname
    , Min( Case When name = 'lname' Then value End ) As lname
    , Min( Case When name = 'city' Then value End ) As city
From MyTable
Group By Id