【发布时间】:2017-12-12 14:31:13
【问题描述】:
我的问题和这个问题类似:https://stackoverflow.com/a/7517904
我有 4 个表,我用键 A 和 B 链接它们:
A:
A B C
1 a c
B:
A B D
1 a d
1 a e
C:
A B E
1 a h
1 a i
D:
A B F
1 a k
1 a l
我想将表格连接在一起,结果应该是:
A B C D E F
1 a c d h k
1 a c e i l
我的实际结果是这样的:
A B C D E F
1 a c d h k
1 a c e h k
1 a c d h l
1 a c e h l
1 a c e i l
1 a c d i l
1 a c d i k
1 a c e i k
问题是,我得到了所有组合。我希望尽可能少的行。我尝试了另一个线程的解决方案,使用行号:
SELECT*
FROM (SELECT @rowsnum := @rowsnum + 1 AS ae1num,
Concat(ae1.a, ae1.b) AS id,
ae1.*
FROM A as ae1,
(SELECT @rowsnum := 0) r
ORDER BY ae1.a,
ae1.b) ae1
LEFT JOIN (SELECT aenum,
Concat(ae111.a, ae111.b) AS id,
aecm.*
FROM (SELECT @rownum := @rownum + 1 AS aenum,
Concat(ae11.a, ae11.b) AS id,
ae11.*
FROM A as ae11,
(SELECT @rownum := 0) a
ORDER BY ae11.a,
ae11.b) ae111
LEFT JOIN B as aecm
ON ae111.a = aecm.a
AND ae111.b = aecm.b
ORDER BY ae111.a,
ae111.b) aec
ON ae1.a = aec.a
AND ae1.b = aec.b
AND aec.aenum = ae1.ae1num
我希望,我把我的问题描述得够清楚了。
【问题讨论】:
标签: mysql sql duplicates combinations