3

私の 4gl プログラムに必要:
電話番号と名前を保持するテーブルがあるとしましょう。同じ電話番号を持つ 2 人、または 1 つの電話番号を持つ 2 つの名前が存在する可能性があります。
テーブル内の各電話番号を 1 つだけ選択する必要があります。
やった:

SELECT DISTINCT phone_number, last_name FROM table 

結果には 2 つのレコードが表示されます。同じ電話番号でも、名前が違うので一意ではなくなります。last_nameに関係なく一意の電話番号を取得するにはどうすればよいですか? (でも、姓も取得したいです。どちらでもかまいません)

4

2 に答える 2

5

DISTINCTお気づきのように、全体が異なる行を返します。

のようなものを探しているようgroup byです。基本的に、GROUP BY phone_number電話番号ごとに 1 つの行を返します。も取得したいのでlast_name、どのように返すかをデータベースに指示する必要があります。あなたはどちらを気にしないと言ったので、単に書くことができます:

SELECT phone_number, MAX(last_name) as last_name
FROM table
GROUP BY phone_number

Informix はFIRST_VALUE集計関数もサポートしていますが、OLAP の状況でしか使用していないため、このコンテキストで機能するかどうかは思い出せません。

于 2015-04-20T14:39:39.207 に答える