如何处理MySQL中缺少的列?

时间:2013-11-04 21:18:17

标签: mysql

我正在Ruby中编写一个函数来从多个表中提取数据,然后将这些值插入“主”表中。问题是并非所有表都具有相同的模式。具体来说,一些表格有“X列”,而其他表格则缺少它。如何使用相同的查询从两个表中选择数据,还要处理列可能存在还是不存在的事实?我尝试了以下CASE,但它似乎不起作用:

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

1 个答案:

答案 0 :(得分: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

如果您正在从Ruby执行单独的查询,则可以使用表名对其进行条件化。当它创建从其中一个表中读取而没有column_x的查询时,它可以将NULL column_x添加到SELECT子句中,以便处理结果的代码不需要区分表格。