MySQL将列名添加到结果的开头

时间:2011-04-07 18:54:44

标签: mysql mysql-error-1064

希望这只是快速修复,但是当我执行任何选择查询时,例如,

SELECT table_name 
FROM table_info 
WHERE load_order IS NOT NULL 
ORDER BY load_order;

它始终将列名添加到结果中。在这种情况下,结果是,

table_name settings tax tax_rate sales_tax_zone sic 
naics exempt_reason wh pack pcat route supply_point 
point credit_status fuel_type participant site salesman 
driver truck profit terms vendor product pump customer 
card card_fuel_type tax_certificate prodware prodware_price

以下是bash脚本的片段:

TABLES=` (
  echo -n "select table_name from table_info "
  echo -n "where load_order is not null "
  echo "order by load_order;" 
) | mysql -uuser -ppassword database`

通过以下方式解析:

for TABLE in ${TABLES}
do
if [ $TABLE != 'table_name' ]
    do_table #Start the load process
fi
done

问题是脚本相当大(~2000)行并且有很多选择查询。有没有我可以传递给mysql的选项,它会排除列名?

找到解决方案:我需要在调用mysql时使用--skip-column-names选项。感谢所有答案。

3 个答案:

答案 0 :(得分:1)

以下是您问题的答案:

mysql CLI手册页说明了“--column-names”的选项。试试吧。

以下是你没有问过的问题的答案:

是的,你应该采取另一种方式。删除一些实际上为您提供数据库连接的语言,而不是通过管道运行“许多选择查询”!

答案 1 :(得分:0)

听起来这就是结果集中返回的列名。

要从shell脚本处理此问题,请尝试修改处理结果的代码。以某种方式跳过第一个结果,因为它是列的名称。

伪代码:

for each result in myResultSet
    if result != myResultSet[0]
    begin
        //include this result.
    end
next

答案 2 :(得分:0)

将选择更改为阅读

SELECT table_name as ` ` 
FROM table_info 
WHERE load_order IS NOT NULL 
ORDER BY load_order;

SELECT table_name as `\0` 
FROM table_info 
WHERE load_order IS NOT NULL 
ORDER BY load_order;