1

name と numb の 2 つの列を持つテーブルがあります。最初の列には名前が含まれ、2 番目の列にはその名前の番号が含まれます。

私がやろうとしているのは、姓の列が名の列と同じ番号を含む名前である名前、番号、名前の3つの列を出力することです。

したがって、出力はおそらく次のようになります。

 | NAME | NUMB | NAME |
 |------|------|------|
 | john |    1 | lucy |
 | stan |    2 | paul |
 | jane |    3 | bill |

ここに、使用しているテーブルの sqlfiddle リンクがあります: http://sqlfiddle.com/#!2/ed72b/1

私はMySQLでこれをやっています。ありがとうございました。

4

3 に答える 3

3

JOIN次のように、同じテーブルにを作成する必要があります。

SELECT t1.name, t1.numb, t2.name AS name2
FROM test t1
JOIN test t2 ON t1.numb = t2.numb AND t1.name <> t2.name

ライブでご覧ください!

于 2013-10-16T05:51:50.790 に答える
1

このクエリは機能します。

しかし、それはあなたに次のように出力を与えるでしょう

NAME    NUMB    NEWNUMB

lucy    1        john

paul    2        stan

bill    3        jane

stan    2        paul

jane    3        bill

john    1        lucy

ラッキーの麻痺が 1 の場合、ジョンも 1 であるため、正しい 2 つの異なる行が返されます。

これがお役に立てば幸いです。

于 2013-10-16T06:00:28.477 に答える
1

次のようなものを試すことができます

SELECT *,
(SELECT name FROM test tt WHERE tt.numb = t.numb AND tt.name <> t.name limit 1) nname
from test t;

SQL フィドルのデモ

あなたのアイデアの問題は、2番目の行セットを見るとわかります

 | NAME | NUMB | NAME |
 |------|------|------|
 | paul |    1 | stan |
 | bill |    2 | jane |
 | lucy |    3 | john |

これは最初の行の逆です。最後の 3 つではなく、最初の 3 つを使用することをどのように決定しますか?

于 2013-10-16T05:51:44.823 に答える