Mysql 将一列拆分为几列

Mysql 将一列拆分为几列,mysql,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 |balas

我需要像你一样不高兴

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..

为此,请给我mysql查询

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

fname  |  lname  |  city,
anand  |  kumar  | bangalore,
mahesh | sahoo   | manglore,
anil   |singh    |balasore,
又来了!这不是正确的方法!
我之所以把答案放在这里,是因为它看起来类似于标签/过滤系统,可能有人需要答案。

嗯。。EAV…除了实际实施规范化设计的明显建议之外,您还可以实现您想要的:

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';

你已经问了完全相同的问题,但是没有得到答案。得到答案可能需要几分钟以上,如果你能更好地解释你的问题,你可能会有更多的运气。仅仅再次发布完全相同的问题不太可能得到更好的回答。我很困惑,您的表有三列,
id
,<代码>名称<代码> >代码>值< /代码>?@ PRITOSH,您是否考虑过重新配置表定义?您应该考虑在多个字段中保存这种数据,并在ID=1的USEDB中选择一个代码>选择*;代码>!您可以使用max(case…)构造和组来完成此操作,而无需多路连接-by@Simom“添加另一个答案”强迫你!
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