Symfoware Server SQLビギナーズガイド - FUJITSU -
|
目次
索引

|
2.1.4 冗長な行を取り除いて取り出す
単一行SELECT文で取り出せるのは一行だけです。単一行SELECT文で探索条件の結果が真になる行が複数存在するとエラーになります。また、探索条件の指定を省略すると、表のすべての行が取り出しの対象になるため、表に2行以上のデータがあるとエラーになります。このように、取り出しの対象になる行が複数ある場合でも、取り出す列のすべてについて、それぞれの行の値が同じ場合には、結果を1行にして取り出すことができます。それには、“DISTINCT”を指定します。指定例を以下に示します。
例1
在庫表から、製品番号が“120”未満の製品名と倉庫番号を求めます。これらの値が同じ行は1行として処理します。
SELECT DISTINCT 製品名, 倉庫番号 INTO :PRODUCT, :WHCODE
FROM 在庫管理.在庫表 WHERE 製品番号 < 120 |

DISTINCTは、取り出す行の値が互いに等しいものを1行にするために使用します。DISTINCTの使用方法で誤りやすいのは、取り出す行が複数あってもエラーにならないと誤解した場合です。この例を以下に示します。
例2
DISTINCTを誤って使用した例です。在庫表から、製品番号が“120”未満の製品名と在庫数量を求めます。
SELECT DISTINCT 製品名, 在庫数量 INTO :PRODUCT, :STOCKQTY
FROM 在庫管理.在庫表 WHERE 製品番号 < 120 |

All Rights Reserved, Copyright (C) 富士通株式会社 2006