SQL代码如下:SELECT DISTINCT A.CRDATTIM KEYID, A.INXFLD01 POLN,
(CASE WHEN B.STATCD IN ('SIGNOKREJ','SIGNERRREJ') THEN 'REJT' ELSE 'CALL' END) FLAG
FROM W03U999S A, W03U999S B
WHERE A.INXFLD01 *= B.INXFLD01
各位高手说说看,我以前从来没看到过*=这个操作符
(CASE WHEN B.STATCD IN ('SIGNOKREJ','SIGNERRREJ') THEN 'REJT' ELSE 'CALL' END) FLAG
FROM W03U999S A, W03U999S B
WHERE A.INXFLD01 *= B.INXFLD01
各位高手说说看,我以前从来没看到过*=这个操作符
这个是Oracle里面的,
SQL里面对应的就是Left Join
而且帮助里面也有关于这个操作的解释,就是英文的而且不多看不明白。
SQL2000里也可以用,到了SQL2005就不行了
就是Left join的意思,,,
create table a(id int)
create table b(id int)insert a select 1
union all select 2
union all select 3insert b select 4
union all select 2
union all select 3select a.* from a,b where a.id*=b.id
/*
id
-----------
1
2
3(3 row(s) affected)
*/select a.* from a left join b on a.id=b.id
/*
id
-----------
1
2
3(3 row(s) affected)
*/select a.* from a join b on a.id=b.id
/*
id
-----------
2
3(2 row(s) affected)
*/drop table a,b
在早期的 Microsoft® SQL Server™ 2000 版本中,使用 *= 和 =* 在 WHERE 子句中指定左、右外部联接条件。有时,该语法会导致有多种解释的不明确查询。FROM 子句中指定遵从 SQL-92 的外部联接,不会导致上述不确定性。因为 SQL-92 语法更为精确,所以,本版中未包括有关在 WHERE 子句中使用旧的 Transact-SQL 外部联接语法的详细信息。以后的 SQL Server 版本可能不再支持该语法。任何使用 Transact-SQL 外部联接的语句都应改为使用 SQL-92 语法。SQL-92 标准支持 FROM 或 WHERE 子句中的内部联接规范。WHERE 子句中指定的内部联接不会出现与 Transact-SQL 外部联接语法相同的不确定性问题。现在大多用left join ,right join ,full join来替换。
如果用*=有些数据库不支持的。
表联接或做全外联接(*=*)时则不易区分,也容易产生歧义,已不推荐使用,知道有这种用法就行了