Skip to content

Instantly share code, notes, and snippets.

@yano3nora
Created July 1, 2017 11:00
Show Gist options
  • Save yano3nora/705e9f8193783a2461434203c260efbc to your computer and use it in GitHub Desktop.
Save yano3nora/705e9f8193783a2461434203c260efbc to your computer and use it in GitHub Desktop.
[mysql: union sample] use UNION sample code. #sql #mysql

UNION で クエリ結果結合

前提: UNION時は取得カラム数を揃えないとNG
ソース:http://qiita.com/suin/items/3ada90eaf2e808e510b8

mysql> SELECT * FROM news ORDER BY date DESC LIMIT 5;
+----------------+----------+------------+
| title                     | category | date       |
+----------------+----------+------------+
| コラム2                 | koramu | 2012-01-24 |
| コラム1                  | koramu | 2012-01-23 |
| エンタメニュース3 | entame | 2012-01-23 |
| 経済ニュース3     | keizai| 2012-01-23 |
| 政治ニュース3      | seiji   | 2012-01-23 |
+-----------------+----------+------------+

# 追加要件
# - 「コラムは最新1件を必ず表示する」
# - 「時系列順に表示されること」

mysql> (SELECT * FROM news WHERE category != 'koramu' ORDER BY date DESC LIMIT 4)
    -> UNION
    -> (SELECT * FROM news WHERE category = 'koramu' ORDER BY date DESC LIMIT 1)
    -> ORDER BY date DESC;
+-------------------+----------+------------+
| title                       | category | date         |
+-------------------+----------+------------+
| コラム2                  | koramu | 2012-01-24 |
| 政治ニュース3      | seiji       | 2012-01-23 | 
| エンタメニュース3 | entame| 2012-01-23 |
| 経済ニュース3      | keizai   | 2012-01-23 |
| 経済ニュース2      | keizai   | 2012-01-22 |
+-------------------+----------+------------+
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment