忍者ブログ

カウンター

プロモーション

カレンダー

12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

AntinomyMy の実験室

   私のWEBアプリ実験室です!

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


  • 2025/01/30 05:39

MySQL 同じテーブルで同じレコードを重複させて結合させる UNION ALL とSELECT に AS

PHP の調べ物

SELECT を使って、同じテーブルの内容で
レコードをかぶってる状態で取得したかった。

たとえば1回のクエリーを送るだけで、
ランキングで自身+100件とか取得出来れば楽だ(プロシージャーをCALLする等)

それではじめは、SELECT に as 適当な名前(例では t_colom)
にして、余計なカラムで順位をつけて取得するみたいなことをしていた。
(実験だから、自身のIDが下に結合されてついてます)


SELECT '1' as t_column, user_id FROM `xxx_table` LIMIT 3
UNION
SELECT '2' as t_column, user_id FROM `xxx_table`
WHERE
`user_id`='0003';
t_columnuser_id
1 0001
1 0002
1 0003
2 0003

しかし、UNION ってALL をつけると、重複してくれて、すべてを取得できる。


SELECT user_id FROM `xxx_table` LIMIT 3
UNION ALL
SELECT user_id FROM `xxx_table`
WHERE
`user_id`='0003';
 
user_id
0001
0002
0003
0003


知らなかった・・・w

UNION DISTINCT がデフォルトで、
UNION って書く場合には、DISTINCT が指定されていることになっている。
知らなかった・・・ 知らなかった・・・

はじめ覚えた本にそんな事が書かれてなかった本で
それをずっと信じていた。

いっぱいあちこち見てみるもんだなぁ・・・

拍手[0回]

PR


  • 2017/12/11 01:09

コメント一覧

  • お名前
  • Email

  • コメント

  • Vodafone絵文字 i-mode絵文字 Ezweb絵文字
  • パスワード
[PR]