dポイントプレゼントキャンペーン実施中!

複数のテーブルのデータ件数を取得して変数に入れ、result.txtに結果を出力したいのですが、下のように書くと、1つのテーブルのデータ件数しか出力されません。複数の結果を出力するにはどうしたらよいか教えてください。

for /f %%z in ('mysql -u root -p ^< "c:\bat\test.sql"') do set count=%%z
echo result: %count% >> "c:\bat\result.txt"

test.sqlの中身を、
select count(*) from table1;
select count(*) from table2;
select count(*) from table3;
とすると何も出力されず、
select count(*) from table1;
とすると、1つの結果だけ出力されます。

A 回答 (2件)

コマンドプロンプトでループさせる意味がよくわからないですが



select concat('result: ',count(*)) as result from table1
union all select concat('result: ',count(*)) from table2
union all select concat('result: ',count(*)) from table3;

みたいなSQLじゃだめなんですか?
    • good
    • 0
この回答へのお礼

union でつなげて読み込んだら、
ご指摘どおり、ループさせずに結果を得られました。
ありがとうございました。

お礼日時:2011/08/22 17:21

そもそも count に意味はあるの?

この回答への補足

echo table1: %count% >> "c:\bat\result.txt"
echo table2: %count% >> "c:\bat\result.txt"
echo table3: %count% >> "c:\bat\result.txt"
という感じで、出力したいと思っています。
count は、変数名に使用しただけです。

補足日時:2011/08/22 15:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す