大家好嗨有这三张桌子
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
答案 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,不适用于整个查询。