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

My SQLについての質問です。

以下のデータがあるとします。

id data
+?+??????+
|1|BBB |
+?+??????+
|2|AAA |
+?+??????+
|3|BBB |
+?+??????+
|4|BBB |
+?+??????+
|5|AAA |
+?+??????+
|6|CCC |
+?+??????+

この場合、データの種類は全部で3種類、AAA、BBB、CCCになるのですが、
MySQLで「 AAA BBB CCC 」の3種類だけを抽出したい場合はどうすれば
いいでしょうか?

よろしくお願い致します。

●質問者: zachouR
●カテゴリ:コンピュータ インターネット
✍キーワード:SQL データ 抽出 AAA SQ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●30ポイント

http://dev.mysql.com/doc/refman/5.1/ja/charset-collate.html

select DISTINCT data from テーブル名

で いかがでしょうか?

◎質問者からの返答

ありがとうございます、さっそく実装しました!

うまくいきました。


2 ● chuken_kenkou
●30ポイント

distinctを使う方法

select distinct data from 表名

group byを使う方法

select data from 表名
 group by data

MySQLは、以下のように書いても文法エラーになりません。

select id,data from 表名
 group by data

これはMySQLの拡張仕様であり、data列でグループ化した結果、id列も一意になる場合にだけ記述を許され、そうでないなら結果は保証されません。

MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.7.3 非表示のフィールドに対する GROUP BY

◎質問者からの返答

ありがとうございます、非常に参考になりました。


3 ● kn1967
●30ポイント

(1)dataの一覧を得るには

SELECT data FROM テーブル名 GROUP BY data

http://dev.mysql.com/doc/refman/4.1/ja/group-by-functions.html


以下余談ですが、

(2)最大のidを求めるには

降順に並べて(ORDER BY id DESC)

一番最初のレコードだけを得る(LIMIT 1)

SELECT id FROM テーブル名 ORDER BY id DESC LIMIT 1

(3)AAA、BBB、CCCそれぞれの中で最大のidを得るには

SELECT data,MAX(id) FROM テーブル名 GROUP BY data
◎質問者からの返答

最大のIDを得るには、MAXを使おうと思っています。(他の質問で答えがでていたので)

このやり方の場合、MAX、MINを使うのとどちらがいいのでしょうか?

(3)は使うことがありそうです、ありがとうございます。

関連質問


●質問をもっと探す●



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