2011/12/13

【MySQL】サブクエリを使った時のメモ

久しぶりの更新です。

今回は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で並べ替えを先に行うことができる等が あげられるかと思います。 ただ、デメリットとしてパフォーマンスが落ちてしまいます。 終わり

0 件のコメント:

コメントを投稿