刚才有个字段不让放在where子句中,否则也出现ORA-00936:缺少表达式,怎么回事?什么情况下会出现这种情况呢?
解决方案 »
- oracle教程
- 存储过程没执行一个update以后都commit了,请问rollback会把commit的数据回滚不?
- 连接远程oracle数据库
- 急!不知道为什么oracle10g中的OracleDBConsoleorcl这个服务启不来,请高手指点,在线等待
- sql 中如何调用Oracle的存储过程
- .net操作oracle怎么这么慢?
- 为什么安装完9i在输入sys和system口令时候出现“ORA-00988:缺少或无效口令”的错误?
- 关于表外键,请教各位
- 急:根据两个数据表生成第三个数据表的方法。
- 急 ,一个SQL语句写不出,求助,拜托!
- 请教高手:这个语句怎么写
- 请问要在一个表中查询重复(完全一样)行的总数,SQL该怎么写?
FROM TABLE1, TABLE2
WHERE TABLE1.PersonID=TABLE2.PersonID(+)
正面的是ORACLE独家SQL语法
ORACLE:
SELECT TABLE1.*,TABLE2.PersonName
FROM TABLE1, TABLE2
WHERE TABLE1.OperatorID=TABLE2.PersonID(+)MS SQL SERVER ,ACCESS
SELECT TABLE1.*,TABLE2.PersonName
FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.OperatorID=TABLE2.PersonID(+)
(注,ACCESS要使用关健字OUTER,而在MS SQL SERVER中则可以省略)别,MS SQL SERVER也有自己的外联接语法
*=左联接,相当于LEFT OUTER JOIN
=*右联接,相当于RIGHT OUTER JOIN
SELECT TABLE1.*,TABLE2.PersonName
FROM TABLE1, TABLE2
WHERE TABLE1.OperatorID*=TABLE2.PersonID你自己可以分别试一试
写出来我将帖子加到100分。
from table1 t1 ,table2 t2,table2 t3
where t1.OperatorID1 = t2.PersonID and t1.OperatorID1 = t2.PersonID(+)这下应该可以了吧。
select t1.* ,t2.personName as PersonName1 ,t3.PersonName as PersonName2
from table1 t1 ,table2 t2,table2 t3
where t1.OperatorID1 = t2.PersonID and t1.OperatorID1 = t3.PersonID(+)
可以通过外键约束来限制。
你的要求可以用:
select t1.* ,t2.personName as PersonName1 ,t3.PersonName as PersonName2
from table1 t1 ,table2 t2,table2 t3
where t1.OperatorID1 = t2.PersonID(+) and t1.OperatorID2= t3.PersonID(+);
来实现