Sqlite连接多个表问题

时间:2016-05-04 08:53:56

标签: android sql database sqlite

大家好嗨有这三张桌子

CREATE TABLE test1 (
   c1 integer,
   primary key (c1)
);
CREATE TABLE test2 (
   c1 integer,
   c2 integer,
   primary key (c2)
);    
CREATE TABLE test3 (
   c2 integer,
   c3 integer,
   primary key (c3)
);

并且我已经尝试过此查询但返回了所有表格而不是受影响的行

SELECT test1.c1, test2.c2, test3.c3
FROM test1
LEFT JOIN test2 ON test1.c1=test2.c1 AND test1.c1 = 1
LEFT JOIN test3 ON test2.c2=test3.c2 

1 个答案:

答案 0 :(得分:0)

问题在于放置条件' AND test1.c1 = 1'在LEFT JOIN内。 它应该放在WHERE中,如下所示:

SELECT test1.c1, test2.c2, test3.c3
FROM test1
LEFT JOIN test2 ON test1.c1=test2.c1
LEFT JOIN test3 ON test2.c2=test3.c2 
where test1.c1 = 1

当您在LEFT JOIN(也包括OUTER和RIGHT)中添加其他条件时,所有不匹配的记录 将得到空值,并从test1表中获取所有行。

在你的sql中,所有记录都从test1中获取,然后与test2和test3表匹配。 条件' AND test1.c1 = 1'仅适用于此LEFT JOIN,不适用于整个查询。