为什么我的left join和inner join得出的数据是一样的?

yybjroam05 2011-03-14 10:48:18
首先请看一语句:
select * from bj_productsys as a left join bj_orderformsys as b on a.productsys2=b.orderformsys4 where b.orderformsys25=199 and TO_DAYS(NOW()) - TO_DAYS(b.orderformsys11) <=0 order by a.productsys2 desc

a表肯有很多记录 where后的条件只涉及到b表,b表满足条件的就只有两条数据,结果我查询出来就就只两天数据,
我把left 改成inner join 结果,查询结果一模一样,改成right join 查询到的结果是对的。
请高手解答一下,这是什么情况。
谢谢!!
...全文
606 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-03-14
  • 打赏
  • 举报
回复
你的语句的问题是,先做LEFT JOIN,然后才进行的WHERE。注意顺序。

估计你期望的是
select * 
from bj_productsys as a left join
(select * from bj_orderformsys where orderformsys25=199 and TO_DAYS(NOW()) - TO_DAYS(orderformsys11) <=0 ) as b
on a.productsys2=b.orderformsys4
order by a.productsys2 desc

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧