2013-11-27 35 views
1

我有以下MySQL查詢:MySQL的別名通過

insert into my_table (col_a, col_b) 
select 
    col_a, 
    col_b, 
    if(foo, bar, baz) as my_alias 
from qux 
group by my_alias 
having my_alias is not null 

我怎麼可以重寫沒有select -ing所產生的場my_alias查詢?

例如,我想實現這樣的事情,我只爲col_a插入,col_b:

insert into my_table (col_a, col_b) 
select 
    col_a, 
    col_b 
from qux 
group by if(foo, bar, baz) as my_alias 
having my_alias is not null 

我發現了一些以前的答案在那裏,這是通過使子選擇來完成。這可以實現沒有一個?提前致謝。

回答

1

The manual tells us

的MySQL允許在GROUP BY表達式子句,所以別名是 不必要:

SELECT id, FLOOR(value/100) FROM tbl_name GROUP BY id, 
FLOOR(value/100); 

的HAVING濾出在端部的NULL記錄。我們也可以使用WHERE來正確地過濾NULL記錄。這意味着這應該工作:

insert into my_table (col_a, col_b) 
select 
    col_a, 
    col_b 
from qux 
where if(foo, bar, baz) is not null 
group by if(foo, bar, baz) 
+0

謝謝你的幫助,Jasny。我試圖使用別名,因爲真正的「if(foo,bar,baz)」是「大」和「醜」。 :) – Glenn

+0

感謝您向我介紹手冊。我想這是不可能的。 – Glenn