質問する
351 次
1 に答える
1
これらは同じテーブルにあるように聞こえますか?またはをname
保持しているかどうかを示す識別器はありますか?accountnumber
accountname
いずれにせよ、次の仮定を使用すると、醜い自己結合を試すことができます。
- 必要なレコード ID を持つレコードは 2 つだけです
- これらは、あいまいな列名で異なる情報を保持する同じテーブル内の複数の列です
- レコードの種類を判別するより良い方法はありません
もしそうなら、この自己結合のようなものから始める必要があります:
SELECT t2.name as accountnumber from example_table as t1
INNER JOIN example_table as t2 on t1.recordID=t2.recordID
WHERE t1.name='$accountname'
編集注-私の仮定が正しく、これが継承しているデータである場合、私はあなたのことを感じており、その構造を改善する必要があります。このように設計している場合は、最初にもう少し検討する必要があるかもしれません。
編集2
おそらく、列にインデックスを付けたいと思うでしょうname
(これは、あなたの例に基づいて使用する識別子です)。
クエリは次のようになります。
SELECT t1.value as accountnumber,t2.value as accountName from example_table as t1
INNER JOIN example_table as t2 on t1.record=t2.record
WHERE t1.name='accountNumber' and t2.name='accountName'
この SQL Fiddle を参照してください: http://www.sqlfiddle.com/#!2/97c2f/1
于 2013-02-21T23:46:19.933 に答える