我有以下数据
表1数据:
Attr1 Attr2
36 L
37 L
38 L
39 L
40 L
41 L
42 L
43 L
44 L
46 L
48 L
50 L
52 L
54 L
56 L
58 L
60 L
62 L
36 P
37 P
38 P
39 P
40 P
41 P
42 P
43 P
44 P
46 P
48 P
50 P
52 P
54 P
56 P
58 P
60 P
62 P
36 PL
37 PL
38 PL
39 PL
40 PL
41 PL
42 PL
43 PL
44 PL
46 PL
48 PL
50 PL
52 PL
54 PL
56 PL
58 PL
60 PL
62 PL
36 PS
37 PS
38 PS
39 PS
40 PS
41 PS
42 PS
43 PS
44 PS
46 PS
48 PS
50 PS
52 PS
54 PS
56 PS
58 PS
60 PS
62 PS
36 R
37 R
38 R
39 R
40 R
41 R
42 R
43 R
44 R
46 R
48 R
50 R
52 R
54 R
56 R
58 R
60 R
62 R
36 S
37 S
38 S
39 S
40 S
41 S
42 S
43 S
44 S
46 S
48 S
50 S
52 S
54 S
56 S
58 S
60 S
62 S
36 XL
37 XL
38 XL
39 XL
40 XL
41 XL
42 XL
43 XL
44 XL
46 XL
48 XL
50 XL
52 XL
54 XL
56 XL
58 XL
60 XL
62 XL
Run Code Online (Sandbox Code Playgroud)
和table2如下:
ItemCode Attr1 Attr2
ITEM-000001 43 S
ITEM-000001 52 L
ITEM-000006 42 R
ITEM-000006 44 R
ITEM-000009 56 R
Run Code Online (Sandbox Code Playgroud)
table2中会有更多项目.
如何获得输出,其中我将得到具有相同'Attr2'的table1的所有行,例如'ITEM-000001'具有两个Attr2 - 'S'和'L',因此它将显示如下所示:
Attr1 Attr2 ItemCode
36 L ITEM-000001
37 L ITEM-000001
38 L ITEM-000001
39 L ITEM-000001
40 L ITEM-000001
41 L ITEM-000001
42 L ITEM-000001
43 L ITEM-000001
44 L
46 L
48 L
50 L
52 L
54 L
56 L
58 L
60 L
62 L ITEM-000001
36 S ITEM-000001
37 S
38 S
39 S
40 S
41 S
42 S
43 S
44 S
46 S
48 S
50 S
52 S
54 S ITEM-000001
56 S ITEM-000001
58 S ITEM-000001
60 S ITEM-000001
62 S ITEM-000001
Run Code Online (Sandbox Code Playgroud)
编辑
阅读你的查询,我想我终于知道你想要什么:
获取所有DISTINCT ItemCode和Attr2从Table2,并加入所有不同Attr1的Table1.我仍然无法从您提供的样品中看到...
您可以将查询减少到:
SELECT DISTINCT T2.ItemCode, T1.Attr1, T2.Attr2
FROM
Table1 T1
CROSS JOIN Table2 T2
ORDER BY 1, 2, 3
Run Code Online (Sandbox Code Playgroud)
我想通过以下方式可以提高性能:
SELECT T2.ItemCode, T1.Attr1, T2.Attr2
FROM
( SELECT DISTINCT Attr1
FROM Table1
) T1
CROSS JOIN
( SELECT DISTINCT ItemCode, Attr2
FROM Table2
) T2
ORDER BY 1, 2, 3
Run Code Online (Sandbox Code Playgroud)
原帖:
你可以用一个LEFT JOIN.这将返回条件匹配的所有行Table1和连接行Table2.栏目Table2是NULL,如果没有行匹配.
SELECT t1.Attr1, t1.Attr2, t2.ItemCode
FROM Table1 t1
LEFT JOIN Table2 t2 ON ( t2.Attr1 = t1.Attr1 AND t2.Attr2 = t1.Attr2 )
WHERE t1.Attr2 IN ( 'S', 'L' )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |