2013-07-24 169 views
0

我有這個表:MySQL查詢,以避免多個查詢

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)的列名稱。如果爲true,我想提出一個X

這樣的:

表:MY_TABLE插入

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

我的問題後:有沒有什麼辦法與同一個查詢做到這一點?

謝謝

+1

沒有ü以往任何時候都運行CREATE TABLE語句。我想,具有數字名稱的列不會被創建。請在您的問題中更改您的列名稱 –

+0

我的不好,你是對的,實際上列包含字母。 – user2613707

回答

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; 
+0

輝煌正是我所期待的,非常感謝 – user2613707

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

0

您可以使用IF()

select if(emp_id=1,'X','') as test, emp_id from TABLE_NAME;