2011-08-15 14 views
1

私はMySQLデータベースに特別なID列を持っています。いくつかの行は、同じ特殊IDを持ちます。データを選択しているときに、同じ特殊IDを持つ次の行を無視するためにその特別なIDを持つ行をすでに取得しているかどうかを指定する方法はありますか?MySQL "non unique id"

+0

1つの問題は、データベースの行が実際に特定の順序で格納されていないことです。データベースの視点から考えてみましょう。複数の列がある場合は、どの行を返したいのですか? –

+0

さて、私はポイントhehを参照してください、しかし、この時点で私はidとの最初の行を選択する気にしません。私はPHPでそれをやらなければならないと思います... –

+2

@Dalton Conley - あなたはSQL経由でそれを行うことができます。あなたは頭の中から「最初の」という概念を抜け出すだけです。行は順序付けられていないデータセットです。したがって、特定のSpecialIdの行の袋があれば、どのように保管するかを選択しますか? 1つの方法は、最も低いPK値または最も高いPK値またはいくつかの他の基準に基づいて任意に選択することである。 – Thomas

答えて

2

あなたが(例えば、スキーマ、サンプル入力、期待される出力などのように)に行くために私たちに多くを与えていない、しかし、あなたが求めることに似て何かを伴う可能性があります。このシナリオでは

Select .... 
From MyTable 
    Join (
      Select Min(PrimarykeyColumn) As Pk 
       , SpecialId 
      From MyTable 
      Group By SpecialId 
      ) As SpecialIdValues 
     On SpecialIdValues.Pk = MyTable.PrimarykeyColumn 

を、IそれぞれのSpecialId値の最小プライマリキー値を任意に選択します。

+0

これは私が必要としていたものです!ありがとう:) –

0

各グループから1つの模範を選択することは困難な問題です。 herehereと解説されています。 MySQLディスカッションリストのthis threadも参照してください。

関連する問題