SQL查询语句里where条件中的*=跟=有什么区别?
<P>我在修改一段代码的时候发现where条件里有*= 和=,不知道两者之间有什么区别?</P><P>select tr_memup.USERS_CORP_CD, USERS_SHOP_CD, tr_memup.USERS_MACHINE_CD,<BR>CORP_NM, tr_memup.CORP_J, CORP_TEL, CORP_ZIP, <BR>from tr_memup, mt_deal, mt_reason, mt_industry, mt_account,<BR>mt_machine, mt_corp<BR>where NEW_SEQ_NO = '12345'<BR>and tr_memup.USERS_CORP_CD *= mt_corp.CORP_CD<BR>and tr_memup.REASON_CD *= mt_reason.REASON_CD<BR>and tr_memup.ACCOUNT_TYPE_CD *= mt_account.ACCOUNT_CD<BR>and tr_memup.DEAL_CD *= mt_deal.DEAL_CD<BR>and tr_memup.INDUSTRY_CD *= mt_industry.INDUSTRY_CD<BR>and tr_memup.USERS_CORP_CD *= mt_machine.USERS_CORP_CD<BR>and tr_memup.USERS_MACHINE_CD *= mt_machine.USERS_MACHINE_CD</P> <P>是不一样,A*=B表示也同时取B里没有的,只有A里有的数据.</P>
<P>如:A里有(1,2,3),B里有(1,2,4),用这个方法会取A里所有的数据了.</P>
<P>A=B的话只能取到(1,2)了</P> <DIV class=quote><B>以下是引用<I>ehxz</I>在2005-11-7 16:05:24的发言:</B><BR>
<P>是不一样,A*=B表示也同时取B里没有的,只有A里有的数据.</P>
<P>如:A里有(1,2,3),B里有(1,2,4),用这个方法会取A里所有的数据了.</P>
<P>A=B的话只能取到(1,2)了</P></DIV>
<p>非常感谢!关于Sybase的资料太少,这个问题一直困扰了我很长时间。谢谢 ! <P>别的SQL好象也是这样用的~还有</P>
<P>"=*"一说,有时候会用的上的.</P> 我是把sybase转成oracle,但是*=在oracle中就无法识别,象你说得这样的话,应该是外连接的方式。 是左外连接。等同于left outer join<br>
<P>在oracle中应该为</P>
<P>select tr_memup.USERS_CORP_CD, USERS_SHOP_CD, tr_memup.USERS_MACHINE_CD,<BR>CORP_NM, tr_memup.CORP_J, CORP_TEL, CORP_ZIP, <BR>from tr_memup, mt_deal, mt_reason, mt_industry, mt_account,<BR>mt_machine, mt_corp<BR>where NEW_SEQ_NO = '12345'<BR>and tr_memup.USERS_CORP_CD = mt_corp.CORP_CD(+)<BR>and tr_memup.REASON_CD = mt_reason.REASON_CD(+)<BR>and tr_memup.ACCOUNT_TYPE_CD = mt_account.ACCOUNT_CD(+)<BR>and tr_memup.DEAL_CD = mt_deal.DEAL_CD(+)<BR>and tr_memup.INDUSTRY_CD = mt_industry.INDUSTRY_CD(+)<BR>and tr_memup.USERS_CORP_CD = mt_machine.USERS_CORP_CD(+)<BR>and tr_memup.USERS_MACHINE_CD = mt_machine.USERS_MACHINE_CD(+)</P>
<P>非常感谢各位。</P> 呵呵,左连和右连 oracle中用的是(+),放在*在sybase中=的另一边 对啊,就是连接啊`~
页:
[1]