请为此案例撰写查询

时间:2012-01-10 06:17:07

标签: sql sqlite

我正在使用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

2 个答案:

答案 0 :(得分:1)

您可以使用union left joinright 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