表1
column1 column2
1 AAA
2 BBB
3 CCC
4 DDD
表2
test1 test2 test3
001 1 商品1
001 2 商品2
期待结果
test1 test2 column2 test3
001 1 AAA 商品1
001 2 BBB 商品2
001 3 CCC
001 4 DDD
为什么用了join还是取不到表1所有的值?下面是自己尝试写的SQL。
如何能实现期待结果呢?
SELECT
*
FROM
table2
LEFT JOIN table1
ON table2.test2 = table1.column1
WHERE
table2.test1 = 001
这次用到UNION ALL
上面是table2已存在data,下面是table2不存在data。
然后将两个表结合。
SELECT
B.TEST1
,A.COLUMN1
,A.COLUMN2
,TEST1
,TEST3
FROM TABLE1
INNER JOIN (SELECT * FROM TABLE2 WHERE TABLE2.TEST1 ='001') B
ON A.COLUMN1= B.TEST2
UNION ALL
SELECT
B.TEST1
,A.COLUMN1
,A.COLUMN2
,NULL
,NUKLL
FROM TABLE1 A,
(SELECT TEST1,TEST2 FROM TABLE2 WHERE TABLE2.TEST1='001') B
WHERE A.COLUMN1 NOT IN (SELECT TEST2 FROM TABLE2 C WHERE B.TEST1=C.TEST1)
GROUP BY
B.TEST1
,A.COLUMN1
ORDER BY TEST1,TEST2
要反過來寫才會是你要的結果
试下子查询吧
select '001' as test1, column1, column2, (select test3 from table2 where table2.test2=table1.column1) as test3
from table1