困惑已久的问题,关于right join 和where的冲突
例如
select * from t1
inner join t2 on ....
inner join t3 on ....
right join t4 on ....
where t1.name= '... ' and t1.date= '... '
就是说,我的预期是保留表t4所有记录,但是where条件会过滤掉t4的记录,而where又是t1的条件筛选
我现在的一个办法是把t4放在from后面,使用left join,但还有没有其他的办法呢?
谢谢!
[解决办法]
不是where的问题,是执行时的顺序就是这样的
[解决办法]
要么这样
select * from (select * from t1
inner join t2 on ....
inner join t3 on .... where t1.name= '... ' and t1.date= '... ') t
right join t4 on ....
[解决办法]
select * from
(
select * from t1
inner join t2 on ....
inner join t3 on ....
where t1.name= '... ' and t1.date= '... '
) as t
right join t4 on .... --注意这里....中对t1 t2 t3的引用都要改成t
[解决办法]
--用子查询
select * from
(select * from t1 where name= '... ' and date= '... ') A
inner join t2 on ....
inner join t3 on ....
right join t4 on ....
[解决办法]
1 2楼好快
[解决办法]
哼哼~~
[解决办法]
这样试试看,先把123连好,然后再right join T4,
select * from
(select * from t1 where t1.name= '... ' and t1.date= '... '
inner join t2 on ....
inner join t3 on ....) tt
right join t4 on ....
[解决办法]
晕,
都是霹雳闪电手啊~,迅雷不及掩耳盗铃~
[解决办法]
先把表1筛选玩再联接呗
困惑已久的有关问题,关于right join 和where的冲突
困惑已久的问题,关于rightjoin 和where的冲突例如select*fromt1innerjoint2on....innerjoint3on....rightj
