- ベストアンサー
複数カラムでdistinctの値を取得する方法
- 複数のカラムにて取りうる値全てを重複なしで取得する方法を教えてください。
- 以下のようなテーブルがあるとします。
- どなたかご教授ください。お願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
提示された表を使っての例を、回答1に示します。 この方法では、列を縦につなげるような指定になり、操作したり情報を増やしたりする上で制約が出てきてしまうと思います。 回答2のように、列を増やさず別の行で管理すれば、検索は単純になり、管理する情報を増やすのも楽だと思います。 (1)回答1 【表定義】 set names sjis; create table t1 (第一希望 varchar(4), 第二希望 varchar(4), 第三希望 varchar(4)); 【格納データ】 insert into t1 values ('東京','大阪','宮城'), ('大阪','京都','東京'), ('福岡','愛知','東京'); 【検索】 select 第一希望 as 志望校 from t1 union select 第二希望 as 志望校 from t1 union select 第三希望 as 志望校 from t1 ; (2)回答2 【表定義】 create table t1 (氏名 varchar(20), 志望順 tinyint, 志望校 varchar(4)); 【格納データ】 insert into t1 values ('yamada',1,'東京'), ('yamada',2,'大阪'), ('yamada',3,'宮城'), ('iwaki',1,'大阪'), ('iwaki',2,'京都'), ('iwaki',3,'東京'), ('satonaka',1,'福岡'), ('satonaka',2,'愛知'), ('satonaka',3,'東京'); 【検索】 select distinct(志望校) from t1;
お礼
早速の回答、ありがとうございます。 おっしゃるとおり、回答2の様に別tableで管理した方が簡単な面もありますが、他の部分との兼ね合いでいろいろ面倒なことがあるもので… unionって自動的に(?)重複を丸めてくれるんですね。コレがまさに求めていた解でした。 どうもありがとうございます。