1

Ok。すべてをもう少し明確にしましょう。

私がやろうとしていることは次のとおりです。

このようなテーブルがあります...

    +---------+--------------------+------------------ ------+
    | | ID | 名前 | 電子メール |
    +---------+--------------------+------------------ ------+
    | | 1 | カール | karl@email.com |
    +---------+--------------------+------------------ ------+
    | | 2 | フレッド | fred@email.com |
    +---------+--------------------+------------------ ------+
    | | 3 | クリストファー | chris@email.com |
    +---------+--------------------+------------------ ------+
 

最終的に作成したいのは、次のような新しいテーブルです。

    +-----+-------+---------------------+----- ------+--------------------+
    | | ID | 名前1 | メール1 | 名前2 | メール2 |
    +-----+-------+---------------------+----- ------+--------------------+
    | | 1 | フレッド | fred@email.com | クリストファー | chris@email.com |
    +-----+-------+---------------------+----- ------+--------------------+
    | | 2 | クリストファー | chris@email.com | カール | karl@email.com |
    +-----+-------+---------------------+----- ------+--------------------+
    | | 3 | カール | karl@email.com | フレッド | fred@email.com |
    +-----+-------+---------------------+----- ------+--------------------+
 

値は水平方向 (id[1].name1 != id[1].name2) および垂直方向 (id[1].name1 != id[2].name1) で一意です。

したがって、この出力は可能ではありません。

    +-----+-------+---------------------+----- ------+--------------------+
    | | ID | 名前1 | メール1 | 名前2 | メール2 |
    +-----+-------+---------------------+----- ------+--------------------+
    | | 1 | フレッド | fred@email.com | クリストファー | chris@email.com |
    +-----+-------+---------------------+----- ------+--------------------+
    | | 2 | フレッド | fred@email.com | カール | karl@email.com |
    +-----+-------+---------------------+----- ------+--------------------+
    | | 3 | カール | karl@email.com | カール | karl@email.com |
    +-----+-------+---------------------+----- ------+--------------------+
 

どうすればこれを簡単に達成できますか?

4

1 に答える 1

0

このクエリはうまくいくはずだと思います:

SELECT id1.name AS name1, id1.email AS email1, id2.name AS name2, id2.email AS email2
FROM table AS id1
JOIN table AS id2 ON ( name1 != name2 ) 
WHERE name1 < name2

tableはテーブルの名前です。お役に立てば幸いです。

于 2012-11-08T10:37:13.597 に答える