2016-04-05 12 views
-3

person_idと一緒にunique fruit_nameを選択するにはどのようにすればいいですか? 私はクエリを書くがエラーになります。SQLでdistinctを使用

マイクエリ:

select person_id,distinct fruit_name from person_fruit; 

表:事前に

enter image description here

ありがとう!

+0

これは 'SELECT DISTINCT'であり、選択された行全体で機能します。 – jarlh

+0

あなたは2つの異なるマンゴー列を持っています。あなたはこの場合どのperson_idを説明することができますか? – jarlh

+0

任意person_id私が取ることができる...結果を得る別の方法はありますか –

答えて

3

DISTINCTは、常にすべての列で機能します。標準SQLでは、SELECTの直後に置く必要があります(実際はデフォルトはSELECT ALL)。構文が有効な標準SQLではありません。

果物ごとに複数のidsがあるため、どのidsを返すかを定義する必要があります。

select min(person_id), -- or MAX 
    fruit_name 
from person_fruit 
group by fruit_name; 

これは、すべてのDBMSで動作していないだけで、古いMySQLバージョンでは(私は本当にMySQLは最終的には標準規格に従うことのような、もちろんこれが発生します:あなたは、単にGROUP BYに切り替えることができますあなたの場合は

MySQL開発者のための多くの混乱)。

+0

ありがとう、私の問題を解決します。 –

2

あなたが代わりにクエリ下記

select person_id,fruit_name from person_fruit group by fruit_name; 

バイ・グループを使用することができ、あなたの選択のすべての列に基づくユニークな提供など個別の単一の列に基づく個別の行を取得することはできませんが、あなたに基づいて個別の行を提供します両方の列の組み合わせ。

select distinct person_id, fruit_name from person_fruit; 
+0

のようです「含まれていない集約関数」が必要 – mohan111

+1

をそれらの一つ – sagi

+0

「互換モード」に応じているのでしょうか? – jarlh