2013-06-18 34 views
1

我已经成功地将我的MySQL表导出到带有列的csv。我用这家伙的答案在Include headers when using SELECT INTO OUTFILE?为MySQL导出到csv添加额外的列?

SELECT 'ColName1', 'ColName2', 'ColName3'

UNION ALL

SELECT ColName1,ColName2,ColName3

FROM YourTable 
INTO OUTFILE '/path/outfile' 

但是,我想要将查询公式导出为要添加到csv文件的新列。我尝试在第二个SELECT声明后添加一个额外的计算列。 MySQL给了我一个错误,说“使用的SELECT语句有不同数量的列”。

例公式:SELECTCAST((ColName1 * ColName2)ASDECIMAL(7,2))ASColNameX。我不确定在我的出口声明中输入它的位置。

回答

0

对于UNION工作,您必须具有相同数量的列,并且它们必须是相同的类型。在创建标题行作为文本时,第二个查询中的所有列也必须是文本。像这样:

SELECT 'ColName1', 'ColName2', 'ColName3', 'New Column' 
UNION ALL 
SELECT 
    ColName1 
    ,ColName2 
    ,ColName3 
    ,CAST(CAST((ColName1 * ColName2) AS DEC(5,2)) AS CHAR) 
FROM YourTable 
INTO OUTFILE '/path/outfile' 
+0

如果我想要以精确的精确度(例如3位数,精度2)进行新列值修剪,该怎么办?或者我通过Excel修改值(程序我导入csv)? – hk101

+0

我收到了VARCHAR附近的mysql语法错误。涉及的列都是十进制的。我通过做CAST((ColName1 * ColName2)AS DEC(5,2))解决了这个问题。 – hk101

+0

进行编辑应该解决您的问题。 –