answer表的数据结构:aid                                 id                                 answerBody isRight
402886153a8223a5013a8223d6730006 402886153a8223a5013a8223d6540005 客户端标记语言    1
402886153a8223a5013a8223d6730007 402886153a8223a5013a8223d6540005 服务器端标记语言 0
402886153a8223a5013a8223d6730008 402886153a8223a5013a8223d6540005 服务器端脚本语言 0
402886153a8223a5013a8223d6730009 402886153a8223a5013a8223d6540005 客户端脚本语言     1id为外键,同一id记录行数不固定我需要把 answerBody 转换成 选项A 选项B 选项C 选项D  这样。
同时第一条数据 转换成列之后,根据isRight字段 决定 是否将其添加进 正确选项转换之后需要的格式:
id                                      问题             正确选项     选项A              选项B     选项C 选项D  。
402886153a8223a5013a8223d6540005        XXXXXXX?        A,D,        客户端标记语言    服务器端标记语言
 

解决方案 »

  1.   

    case  .... when .... then ...
    无法满足需求。
      

  2.   

    http://blog.csdn.net/acmain_chm/article/details/4283943
    MySQL交叉表
    在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx(  id int primary key,  c1 c...
      

  3.   


    我弄了一个十分复杂的SQL语句解决了这个问题。晚点贴上来。
    你回复的帖子,晚上回去看看。
      

  4.   

    [Quote=引用 3 楼  的回复:]可否把代码贴出来,我也遇到类似的问题了。
      

  5.   

    SELECT sub.subBody,concat(
    (case when(select isRight from nfmsdb.answer where id=sub.id
    order by aid limit 0,1)=1 then 'A' else '' end ),
    (case when(select isRight from nfmsdb.answer where id=sub.id
    order by aid limit 1,1)=1 then 'B' else '' end ),
    (case when(select isRight from nfmsdb.answer where id=sub.id
    order by aid limit 2,1)=1 then 'C' else '' end ),
    (case when(select isRight from nfmsdb.answer where id=sub.id
    order by aid limit 3,1)=1 then 'D' else '' end ),
    (case when(select isRight from nfmsdb.answer where id=sub.id
    order by aid limit 4,1)=1 then 'E' else '' end )
     )as 'rightAnswer',sub.difficulty,lps.name,
    (select answerBody from nfmsdb.answer where id=sub.id
    order by aid limit 0,1) as '选项A',
    (select answerBody from nfmsdb.answer where id=sub.id
    order by aid limit 1,1) as '选项B',
    (select answerBody from nfmsdb.answer where id=sub.id
    order by aid limit 2,1) as '选项C',
    (select answerBody from nfmsdb.answer where id=sub.id
    order by aid limit 3,1) as '选项D',
    (select answerBody from nfmsdb.answer where id=sub.id
    order by aid limit 4,1) as '选项E'
    FROM (nfmsdb.subject sub
    inner join nfmsdb.lorepoint lps on lps.id = sub.lorePoint_id )
    inner join nfmsdb.course cous on lps.coid = cous.coid;
      

  6.   

    这个是我不用存储过程做的。  在mySQL 唔错。
    有高手有更好的解决方案。欢迎分享。代码地址:http://user.qzone.qq.com/5789492#!app=2&via=QZ.HashRefresh&pos=1350823584