我正在使用SQLITE,并且遇到了一些我无法找到任何查询的情况。
请为此案例撰写查询。
表格 - 答:
Name Class RollNo
ab 2 1
bc 2 2
cd 2 3
表格 - B:
Sport Grade RollNo
wx A 2
xy B 3
yz C 4
zz D 5
让我们假设这两个是表格。
我需要一个返回下表的查询:
Name Class RollNo Sport Grade
ab 2 1
bc 2 2 wx A
cd 2 3 xy B
4 yz C
5 zz D
我希望你理解我在最后一张桌子上的意思; 所有卷号应该出现在结果表中...........
还有一次我正在使用 SQLITE 。
答案 0 :(得分:1)
您可以使用union
left join
和right join
right join
left join
,而select * from (
select a.name, a.class, coalesce(a.rollNo, b.rollNo) as rollNo, b.sport, b.grade
from tableA a
left join tableB b on a.rollNo = b.rollNo
union
select a.name, a.class, coalesce(a.rollNo, b.rollNo) as rollNo, b.sport, b.grade
from tableB b
left join tableA a on b.rollNo = a.rollNo
) t
order by rollNo
使用{{1}}互换表:
{{1}}
答案 1 :(得分:0)
您基本上想要执行SQLITE中不直接支持的FULL OUTER JOIN
,但您可以使用UNION的LEFT JOINS实现相同的效果。
SELECT a.Name, a.class, a.rollNo, b.support, b.grade
FROM TABLE-A a
LEFT JOIN TABLE-B b
ON a.RollNo = b.RollNo
UNION ALL
SELECT a.Name, a.class, b.rollNo, b.support, b.grade
FROM TABLE-B b
LEFT JOIN TABLE-A a
ON a.RollNo = b.RollNo
WHERE a.RollNo IS NULL