我有此场景问题,仅需使用联接即可解决。除相交或并集以外,不能使用。
示例代码:
auto lambda_isFloat = [](float val) {return (val != floor(val)); };
-加入后我得到了
--demo setup
create table t1 (id int)
insert into t1 values (1),(2),(3)
create table t2 (id int)
insert into t2 values (4),(5),(6)
--join
select t1.id,t2.id
from t1 full outer join
t2 on t1.id=t2.id
-但我需要的是
id id
----------- -----------
1 NULL
2 NULL
3 NULL
NULL 4
NULL 5
NULL 6
有人可以帮我吗?我知道使用联合可以轻松完成此任务,但是仅使用联接即可解决此挑战。
感谢您的帮助....
答案 0 :(得分:0)
-在向代码添加大小写之后解决了挑战。
select case when t1.id is null then t2.id else t1.id end as id
from t1 full outer join
t2 on t1.id=t2.id
答案 1 :(得分:0)
您可以使用以下代码:
SELECT case when t1.id IS NULL THEN t2.id ELSE t1.id END AS id
FROM t1 FULL OUTER JOIN t2
ON t1.id=t2.id
正如您所说的“从联合使用”
select * from t1
union
select * from t2
答案 2 :(得分:0)
虽然UNION ALL是更好的选择,但是您可以使用以下脚本-
SELECT
CASE WHEN C.ID1 IS NULL THEN C.ID2 ELSE C.ID1 END V
FROM
(
SELECT * FROM
(
SELECT 'T1' TabName1,id ID1 FROM @t1
)A
FULL JOIN (
SELECT 'T2' TabName2,id ID2 FROM @t2
)B
ON A.TabName1 = B.TabName2
)C
ORDER BY 1