我对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
这可能吗?
答案 0 :(得分: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;