2009-08-17 5 views
1

私はmysqlデータベースに2行のデータを持っています。両方の行は、1つの列を除いて同じです。私が探しているのは、両方の異なる値を持つ単一の行を生成するクエリです。誰かが私を助けてくれますか?2つの行の結果を1つにまとめることはできますか?

データの例は次のとおりです。

1 Administrator Test 2009-08-17 03:57:35 
1 Miller   Test 2009-08-17 03:57:35 

私は必要なものは以下です:

1 Administrator Miller Test 2009-08-17 03:57:35 

DISTINCT私にそれを与えることはありません。追加の列を追加してを追加するか、結果セットに追加する必要があります。


これは私が使用しようとしているコードです。

SELECT 
t2.msg_id, 
t3.lname AS sender, 
t4.lname AS recipient 
FROM 
mail_message AS t1 
Inner Join mailbox AS t2 ON t1.msg_seq = t2.msg_seq 
Inner Join employee AS t3 ON t3.employee_id = t2.employee_id 
INNER JOIN employee AS t4 ON t3.employee_id = t4.employee_id 
+0

?結果セットを強制的に単一の行にするよりも優れたアプローチがあります。 – Nelson

答えて

4

確かに。あなたはこのような技術の何かを、自身のコピーにテーブルをJOINことができます。

SELECT t1.*, t2.name 
FROM the_table AS t1 
INNER JOIN the_table AS t2 ON (t1.id = t2.id AND t1.test = t2.test AND t1.date_column = t2.date_column AND t1.name < t2.name) 

ここでは、任意のテーブルt1や他のt2の一つのコピーに名前を付け、名前を除いて同一である行を結合します。それは、2つの一致する行をもたらすので、私は単に、name!=試験をしない

注:Administratort1であり、他の場合一つはAdministratort2です。同一のテーブルを別のテーブルと区別するために、t1は常に「より小さい」(すなわちアルファベット順の)名前を持つテーブルであると主張します。

同じ行が3つ以上ある可能性がある場合、これは動作しますが、いくつかの一致が返されます。たとえば、AB、およびC以外は同一の行のすべての名前は、あなたが取得したいです:

A B 
B C 
A C 
正確にあなたが達成しようとしているのは何
+0

こんにちは、偉大な例と説明のためのVotey、ありがとう。私はそのようなクエリを書き直してみるつもりです。私は私が見つけたものを報告します。ありがとうございました。 –

+0

こんにちは。あなたはまだ周りですか?私はこれを働かせることはできません。 –

+0

あなたがこぼれたようです。私はこれが私が必要とすることをすることを確信しているので、あなたにこの回答の信用を与えるつもりです。私はそれに取り組むことを誓う。ありがとうございました。 –

関連する問題