我有两个表-> tb1和tb2。 我正在使用ID列在这些表上执行左联接操作,而且我还有其他条件,例如一列不等于另一列。 下面是示例代码
select * from tb1 LEFT JOIN tb2 ON tb1.id=tb2.id AND tb1.pid!=tb2.pid;
我能够从上述查询中获取结果。
但是我需要知道是否有其他方法可以使用sql获得相同的结果??
答案 0 :(得分:2)
实际的SQL标准使用<>
而不是!=
。
select * from tb1 LEFT JOIN tb2 ON tb1.id=tb2.id AND tb1.pid<>tb2.pid;
答案 1 :(得分:0)
由于您的加入和加入条件,您似乎不等于不工作。 如果我们创建两个表并按照您的查询进行创建
create table t1(id int,pid int);
create table t2 (id int,pid int );
insert into t1 values(1,2),(2,3),(3,4);
insert into t2 values(1,2),(2,3),(3,4);
select t1.* from t1 left join
t2 on t1.id=t2.id and
t1.pid!=t2.pid
order by t1.id
id pid
1 2
2 3
3 4
它返回第一个表的所有值,因为LEFT JOIN从左表(表1)返回所有记录,从右表(表2)返回匹配的记录。如果不匹配,则结果从右侧为NULL。
但是,如果您将内部联接放在相同的位置,则不会返回任何行。所以我认为问题不在“不等于运算符”中