2

私はMySQLに少し慣れていないので、これを行う方法や、それが可能かどうかさえわかりません。

私はこのようなテーブルを持っています:

Table products
    id  |  model  |  alt_model
    --     -----     ---------
    1      abc          abc
    2      ab-c         abc
    3      a-bc         abc
    4      def          def
    5      ghi          ghi
    6      gh-i         ghi
    7      jk-l         jkl
    8      mno          mno
    9      m-n-o        mno
    10     mn-o         mno
    11     m-no         mno
    12     pqr          pqr
    13     stu          stu

alt_modelsが同じである製品のすべての重複する組み合わせをもたらすクエリを実行できるようにしたいと思います。重複の各ペアは一意であり、順序を切り替えても別の結果は得られませんが、結果のid1フィールドのIDは低くなります。

結果は次のようになります。

id1  |  id2   |  model1  |  model2
---     ---      ------     ------
 1       2       abc        ab-c
 1       3       abc        a-bc
 2       3       ab-c       a-bc
 5       6       ghi        gh-i
 8       9       mno        m-n-o
 8       10      mno        mn-o
 8       11      mno        m-no
 9       10      m-n-o      mn-o
 9       11      m-n-o      m-no
 10      11      mn-o       m-no

これは可能ですか?

4

1 に答える 1

2

単純な自己結合でそれを行う必要があります。

SELECT a.id id1, b.id id2, a.model model1, b.model model2
FROM products a
JOIN products b
  ON a.alt_model=b.alt_model           -- alt_model must match
 AND a.id < b.id                       -- and id1 is smaller
ORDER BY id1,id2;

ここでテストするためのSQLfiddle

于 2012-11-14T22:15:18.360 に答える