2013-11-04 71 views
0

我在Ruby中編寫一個函數來從多個表中提取數據,然後將這些值插入到「主」表中。問題是並不是所有的表都有相同的模式。具體而言,一些表格有「X列」,而其他表格則錯過了。如何使用相同的查詢從兩個表中選擇數據,但處理列可能存在或不存在的事實?我嘗試了以下CASE,但它似乎不起作用:如何處理MySQL中缺失的列?

select case 
     when column_x is not null then sum(column_x) 
     else null 
    end case 
+0

你可以在'SELECT'中添加一個NULL列? – Kermit

+0

您不能對這樣的表使用相同的查詢。 – Barmar

+0

@FreshPrinceOfSO我希望!不幸的是,我沒有創建表格,「所有者」也不會添加它。 :( –

回答

0

如果它們不同,則不能對所有表使用相同的查詢。

一個簡單的解決方案是將列X添加到其他表中,並將空值保留在其中。當您在查詢中編寫SUM(column_x)時,對於這些表,它將爲NULL

否則,如果您使用的是UNION結合所有的表,你可以爲這些表添加NULL

SELECT column_x, column_y, column_z FROM table1 
UNION 
SELECT NULL, column_y, column_z FROM table2 

如果你從紅寶石做單獨的查詢,就可以實現條件在桌子上名稱。當它創建從其中一個沒有column_x的表中讀取的查詢時,它可以將NULL column_x添加到SELECT子句中,以便處理結果的代碼不需要區分這些表。