Mysql 显示结果-根据条件将1列中的数据分为2列

Mysql 显示结果-根据条件将1列中的数据分为2列,mysql,sql,oracle,toad,Mysql,Sql,Oracle,Toad,你好,我需要帮助 我的查询显示以下结果: Id name color Version 1 leather black 1 1 leather brown 2 2 suede brown 1 3 cloth green 1 3 cloth blue 2 我想显示以下内容

你好,我需要帮助

我的查询显示以下结果:

Id      name           color    Version
1       leather        black      1
1       leather        brown      2
2       suede          brown      1
3       cloth          green      1
3       cloth          blue       2
我想显示以下内容:

Id      name           color    Color_2    
1       leather        black      brown     
2       suede          brown      
3       cloth          green      blue
查询很简单 目前

SELECT ID, NAME, COLOR,VERSION
FROM table1,table2  
WHERE table1.ID = table2.ID 
AND id in 
    (SELECT ID 
    FROM table1,table2 
    WHERE table1.ID = table2.ID  
    AND VERSION in ('1'))
AND VERSION in ('1','2')

你的数据库类型有点乱…是mysql还是oracle?不管怎么说,我是根据你的select语句猜到了oracle。我使用的是基于“join”的语法,我发现它比这里的更容易阅读。将版本为1的select语句左键连接到版本为2的select语句。如果有版本3,请在其中添加另一个联接

select a.id, a.name, a.colour, b.colour
from (select * from table1 where version = 1) a
left join (select * from table1 where version = 2) b
 on a.id = b.id

这假设版本1始终存在,并且如果在设计时知道可能拥有的最大颜色数,则不可能存在没有版本1的版本2

drop table my_test;

create table my_test (
  id          number,
  name        varchar2(32),
  color       varchar2(32),
  version     number);

insert into my_test values(1,'leather','black',1);
insert into my_test values(1,'leather','brown',2);
insert into my_test values(2,'suede','brown',1);
insert into my_test values(3,'cloth','green',1);
insert into my_test values(3,'cloth','blue ',2);

set linesize 200
select min(id) id,
       name,
       max(decode(version,1,color,null)) color,
       max(decode(version,2,color,null)) color_2
  from my_test
 group by name
 order by 1;

        ID NAME       COLOR      COLOR_2   
---------- ---------- ---------- ----------
         1 leather    black      brown     
         2 suede      brown                
         3 cloth      green      blue      

3 rows selected.

这将适用于任何Oracle数据库版本。根据您使用的版本,请查看列表、WM_CONCAT和类似内容

让我重新定义这个问题-它是oracle。。这一切都来自同一张桌子的颜色也。。。选择tabble1.ID、table1.NAME、table1.COLOR、table1.VERSION 从表1到表2 其中table1.ID=table2.ID 身份证在哪 选择ID 从表1到表2 其中table1.ID=table2.ID 和“1”中的版本
和“1”和“2”中的版本

请向我们展示表1和表2的模式表结构。你需要一个在MySQL和Oracle中都能工作的代码吗?在设计时指定给特定名称的最大颜色数是已知的吗?我不想在数据库中插入任何东西。。。我只想修改当前查询并根据需要显示结果。。我真的很感谢你的帮助……让我重新解释一下这个问题——这是甲骨文。。这一切都来自同一张桌子的颜色也。。。选择tabble1.ID、table1.NAME、table1.COLOR、table1.VERSION FROM table1、table2其中table1.ID=table2.ID和ID in SELECT ID FROM table1、table2其中table1.ID=table2.ID和“1”中的版本以及“1”、“2”中的版本