MySQLでidだけをSELECTして、カンマ区切りにして出力する
SELECT GROUP_CONCAT(id SEPARATOR ', ') FROM examples; +-------------------------------------------------------------------------------------+ | GROUP_CONCAT( id SEPARATOR ', ') | +-------------------------------------------------------------------------------------+ | 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146 | +-------------------------------------------------------------------------------------+
ちょっとデバッグ目的で、mysqlコンソールで直接SQL書いて、どんなデータが取れるか確認したかった。ただ、perlでは1回SELECTして、その結果をwhileで回して、それを元にSELECTをしてって感じなので、それをやるにはWHERE IN()を使う事になります。それで、WHERE IN()に渡す為の、カンマ区切りのidが欲しかったので、調べてやってみました。これならWHERE IN()のとこにコピペできます。
サブクエリーでやれよって話かもしれないけど、実際に書いてたスクリプトはJOINとかしてて複雑なSQLだったので。MySQLは、JOINありのサブクエリーって苦手なのか、かなり遅いのでクエリーを分けたかったので。
書いた時期
2011-09-29