SQL server Management Studio の使い方
以下の書籍を参照しました。
SQL Server 2008の教科書
松本美穂 松本崇博 ソシム株式会社 2009
【SQLステートメントの基本:その他のSQL92規格】
「DISTINCT」、「サブクエリ」、「CASE式」
■重複データの排除(DISTINCT)
重複したデータを排除して表示
select distinct 列名 from テーブル名
このままだとなんのこっちゃサッパリなので
++ テーブルA ++
AID 名前 BID
1 イチゴ 10
2 りんご 10
3 みかん 20
があったとして、
select distinct BID from テーブルA
と記述すると、
BID
10
20
とだけ表示されます。
選択リスト「BID」が表示され、
さらに重複データが省かれています。
■サブクエリ(副問い合わせ)
++ テーブルA ++
AID 名前 入り数 BID
1 イチゴ 30 10
2 りんご 12 10
3 みかん 15 20
4 さくらんぼ 50 10
っていうのがあったとして、
select MAX(入り数) as 入り数MAX from テーブルA
ってすると、もちろん入り数が一番多いさくらんぼのデータが出てくるよね。
こんな感じ
入り数MAX
50
じゃ次。
select MAX(名前) from テーブルA
ってすると、どうなるか。
文字列のMAXは、「Shift-JISコード」の一番大きい値を引っ張るんだって。
この例の場合は、「りんご」になるらしく、以下の通り。
(列名なし)
12
でもさー、MAXの値だけじゃなくて、それが何に紐付く値なのか知りたいじゃない?
そう思って、
select MAX(名前),MAX(入り数) from テーブルA
なんて記述したらどうなるか!?
(列名なし) (列名なし)
りんご 50
なんて、変な結果が出てきちゃうじゃないの!
りんごの入り数は12個だし、50個入ってるのはさくらんぼだし・・・
ここで登場するのが、「サブクエリ」
最初は表示させたい列名を列挙させといて、
where句でselect文を入れ子にしちゃう、と。
select * from テーブルA
where 入り数 = (select MAX(入り数) from テーブルA)
そうすると、こんな結果が返ってきます。
AID 名前 入り数 BID
4 さくらんぼ 50 10
入り数 = (select 最大) のほかにも
入り数 > (select 平均) とかもできるし。
以下の書籍を参照しました。
SQL Server 2008の教科書
松本美穂 松本崇博 ソシム株式会社 2009
【SQLステートメントの基本:その他のSQL92規格】
「DISTINCT」、「サブクエリ」、「CASE式」
■重複データの排除(DISTINCT)
重複したデータを排除して表示
select distinct 列名 from テーブル名
このままだとなんのこっちゃサッパリなので
++ テーブルA ++
AID 名前 BID
1 イチゴ 10
2 りんご 10
3 みかん 20
があったとして、
select distinct BID from テーブルA
と記述すると、
BID
10
20
とだけ表示されます。
選択リスト「BID」が表示され、
さらに重複データが省かれています。
■サブクエリ(副問い合わせ)
++ テーブルA ++
AID 名前 入り数 BID
1 イチゴ 30 10
2 りんご 12 10
3 みかん 15 20
4 さくらんぼ 50 10
っていうのがあったとして、
select MAX(入り数) as 入り数MAX from テーブルA
ってすると、もちろん入り数が一番多いさくらんぼのデータが出てくるよね。
こんな感じ
入り数MAX
50
じゃ次。
select MAX(名前) from テーブルA
ってすると、どうなるか。
文字列のMAXは、「Shift-JISコード」の一番大きい値を引っ張るんだって。
この例の場合は、「りんご」になるらしく、以下の通り。
(列名なし)
12
でもさー、MAXの値だけじゃなくて、それが何に紐付く値なのか知りたいじゃない?
そう思って、
select MAX(名前),MAX(入り数) from テーブルA
なんて記述したらどうなるか!?
(列名なし) (列名なし)
りんご 50
なんて、変な結果が出てきちゃうじゃないの!
りんごの入り数は12個だし、50個入ってるのはさくらんぼだし・・・
ここで登場するのが、「サブクエリ」
最初は表示させたい列名を列挙させといて、
where句でselect文を入れ子にしちゃう、と。
select * from テーブルA
where 入り数 = (select MAX(入り数) from テーブルA)
そうすると、こんな結果が返ってきます。
AID 名前 入り数 BID
4 さくらんぼ 50 10
入り数 = (select 最大) のほかにも
入り数 > (select 平均) とかもできるし。