人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQL(MS)で、ある列内において、重複している商品のみ書き出す方法はありますか? 例:列a,a,b,c,c,c,d,e の場合、a,cを抜き出す

●質問者: negi-toro
●カテゴリ:コンピュータ
✍キーワード:MS SQL
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● mame777
●30ポイント

http://www.hatena.ne.jp/

はてな

select a from (

(URLはダミーです)

select a,count(*) cnt from TBL_A group by a) X where X.cnt > 1

;

上記でいかがでしょう。

TBL_Aテーブルに列aがある前提です。


2 ● TONTON3
●20ポイント

http://tonton38.hp.infoseek.co.jp/

聖へべれけ女学院

こんなSQLはどうでしょうか?SQL-Server

SELECT 商品ID

FROM 商品マスタ

GROUP BY 商品ID HAVING COUNT(商品ID)<>1

商品マスタというテーブルにある重複した商品IDを抽出します。


3 ● keiforce
●10ポイント

http://www.hatena.ne.jp/1071137547

SQL(MS)で、ある列内において、重複している商品のみ書き出す方法はありますか? 例:列a,a,b,c,c,c,d,e の場合、a,cを抜き出す .. - 人力検索はてな

上記URLはダミーです

From句に同じテーブルの列をカウントさせてGroup by で列を設定すればいいんじゃないでしょうか?

Select A.あ, A.Cnt From (Select Count(あ) Cnt From Table A GroupBy あ) Where A.Cnt>2

こんな感じでちなみにOracleしかやってないのでMSではできないのかも?


4 ● sasada
●10ポイント

http://www.hatena.ne.jp/list

人力検索はてな - 質問一覧

URLはダミーです。

この場合、重複行の削除というより、グループ化の方が適切ですね。

したがって、group byで、重複をチェックしたい列を指定します。

グループ化した中で重複している件数をチェックするので、count(重複チェック項目)という集計関数を使います。

COUNTはグループ化された行の件数を返します。(簡単に言えば)

つまり、COUNT(重複チェック項目)が1なら重複なし、1より大きければ重複ありです。

グループ化のあとに集計結果で条件設定するときは HAVINGを使用します。

したがって、

SELECT * FROM 問題のテーブル /* a,a,b,c,c,c,d,eが入っている */

GROUP BY 重複チェック項目

HAVING COUNT(重複チェック項目) > 1

で、お尋ねの処理が出来ると思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ