我有这张桌子:
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的NOT YET填充列(0101 0202 0303)的列名。如果是的话我想要放一个X
像这样:表:插入后的my_table
col1 col2 col3 0101 0202 0303
-----------------------------------------------------
FIB100 internet 1MEGAMAX X
我的问题:有没有办法用同样的查询做到这一点??
谢谢
答案 0 :(得分: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.
摄影指导Vinit
答案 1 :(得分:0)
答案 2 :(得分:0)
您也可以使用IF()
select if(emp_id=1,'X','') as test, emp_id from TABLE_NAME;
答案 3 :(得分: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;