久しぶりの更新です。 今回はMySQLのお話です。 会社で最近SQLを書くことがありまして、その際のメモです。 MySQLにはサブクエリという機能がありSQLステートメント中に別のSQLステートメントを 指定することができます。 つまり入れ子になったSQLステートメントのリソースをSQLステートメントに使用できる ということです。 例えばFROM句やWEHRE句などですね それを使って今回SQLを書きました。 まずサブクエリの書き方として「()」で加工必要があります。(SELECT * FROM `dual` )こんな感じですね。 実際にWHERE句に指定するとこうなります。SELECT * FROM `user` WHERE `user_id` IN ( ( SELECT `user_id` FROM `dual` ) )WHERE句に指定する場合には上記のようなSQLでいいのですが、 FROM句に指定する場合にはもう一手間必要になります。 FROM句に指定する場合はこうなります。SELECT * FROM ( SELECT `user_id` FROM `dual` ORDER BY `user_id` DESC ) AS `dual`このようにASでエイリアスをつけてやる必要があります。 メリットとしては普段出力することしかできないMAXのみの取得や GROUP BYでグループ集計する前にORDER BYで並べ替えを先に行うことができる等が あげられるかと思います。 ただ、デメリットとしてパフォーマンスが落ちてしまいます。 終わり
2011/12/13
【MySQL】サブクエリを使った時のメモ
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿