コードロード

エラー討伐

【SQL】サブクエリに「AS」でエイリアスをつけないとEvery derived table must have its own alias

やろうとしたSQL

ページネーションを作ろうと思って書いたSQL

SELECT * FROM
          (SELECT *
          FROM   samples
          WHERE id < 30 ORDER BY id DESC LIMIT 1)
UNION ALL
SELECT * FROM
          (SELECT *
          FROM   samples
          WHERE id >= 30 ORDER BY id ASC LIMIT 6)

エラー

Every derived table must have its own alias

「ゼロから始めるデータベース操作」にはエイリアスは省略できるとか書いてあったような気もするけど・・・

www.amazon.co.jp

解決策

AS エイリアス でサブクエリに別名をつけてあげる

SELECT * FROM
          (SELECT *
          FROM   samples
          WHERE id < 30 ORDER BY id DESC LIMIT 1) AS samples1
UNION ALL
SELECT * FROM
          (SELECT *
          FROM   samples
          WHERE id >= 30 ORDER BY id ASC LIMIT 6) AS samples2

参考