0

我有这张桌子:

CREATE TABLE my_table (
  col1 VARCHAR(55),
  col2 VARCHAR(55),
  col3 VARCHAR(55),
  0101 VARCHAR(55),
  0202 VARCHAR(55),
  0303 VARCHAR(55)
);

现在我想用从另一个查询返回的数据填充表,例如:

 SELECT   col1, col2, col3, GROUP_CONCAT(col4)
 FROM     my_other_table
 GROUP BY col1, col2, col3

现在这个查询产生了这一行(还有更多,但对我来说,一行就足够了):

 col1     col2        col3      GROUP_CONCAT(col4)
 -------------------------------------------------
 FIB100   internet   1MEGAMAX       0202,0404

现在我要做的是检查在连接值中是否有我的表 my_table 的尚未填充的列 (0101 0202 0303) 的列名。如果是真的我想放一个X

像这样 :

表:插入后的 my_table

 col1     col2        col3       0101   0202    0303 
 -----------------------------------------------------
 FIB100   internet   1MEGAMAX             X

我的问题:有没有办法用相同的查询来做到这一点?

谢谢

4

3 回答 3

0

用例声明

Select col1, col2, col3, 
case when 0101 then x else '' end as 0101,
case when 0202 then x else '' end as 0202,
case when 0303 then x else '' end as 0303 from table.

维尼特

于 2013-07-24T08:45:19.833 回答
0

IF()你也可以使用

select if(emp_id=1,'X','') as test, emp_id from TABLE_NAME;
于 2013-07-24T08:51:17.720 回答
0

希望这会帮助你。

我更改了列名(不能使用数字作为列名)

CREATE TABLE my_table1 (
  col1 VARCHAR(55),
  col2 VARCHAR(55),
  col3 VARCHAR(55),
  c0101 VARCHAR(55),
  c0202 VARCHAR(55),
  c0303 VARCHAR(55)
);

CREATE TABLE my_other_table (
  col1 VARCHAR(55),
  col2 VARCHAR(55),
  col3 VARCHAR(55),
  col4 VARCHAR(55)
);

那么,查询是:

INSERT INTO my_table (col1,col2,col3,c0101,c0202,c0303)
    select col1, col2, col3, 
           if (GROUP_CONCAT(col4) like '%0101%' , 'X' , '') as c0101,
           if (GROUP_CONCAT(col4) like '%0202%' , 'X' , '') as c0202,
           if (GROUP_CONCAT(col4) like '%0303%' , 'X' , '') as c0303
    From my_Other_table
    group by col1, col2, col3;
于 2013-07-24T09:10:17.673 回答