忍者ブログ

カウンター

プロモーション

カレンダー

03 2024/04 05
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

AntinomyMy の実験室

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

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

×

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


  • 2024/04/21 01:40

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]