SELECT * FROM MOBILE_SUB1
db:oracle9i
table: MOBILE_TESTname color
NOKI3 RED
NOKIA NOKI3
NOKIA1 NOKIA1
写了段自我连接的sql文,如下:SELECT UNIQUE A.NAME,A.COLOR
FROM MOBILE_TEST A JOIN MOBILE_TEST B
ON A.COLOR = B.NAME
AND A.NAME != B.NAME 疑问1、自我连接在实际项目中用得多吗?
疑问2、AND A.NAME != B.NAME 换成 WHERE A.NAME != B.NAME
检索效果一样。其他的单表检索条件(如:A.NAME = 'NOKIA')也作为ON
的一部分,规范吗?(我试过,跟放在where后面检索效果是一样的。)疑问3、没有写 AND A.NAME != B.NAME 的话:
NOKIA1 NOKIA1
NOKIA NOKI3 写了 AND A.NAME != B.NAME 的话:
NOKIA NOKI3
我写这句本意是想排出记录跟自己比较的可能性。可是好像作用跟我想象的有出入……迷惑中请大家帮我指点迷津啊!拜谢!
db:oracle9i
table: MOBILE_TESTname color
NOKI3 RED
NOKIA NOKI3
NOKIA1 NOKIA1
写了段自我连接的sql文,如下:SELECT UNIQUE A.NAME,A.COLOR
FROM MOBILE_TEST A JOIN MOBILE_TEST B
ON A.COLOR = B.NAME
AND A.NAME != B.NAME 疑问1、自我连接在实际项目中用得多吗?
疑问2、AND A.NAME != B.NAME 换成 WHERE A.NAME != B.NAME
检索效果一样。其他的单表检索条件(如:A.NAME = 'NOKIA')也作为ON
的一部分,规范吗?(我试过,跟放在where后面检索效果是一样的。)疑问3、没有写 AND A.NAME != B.NAME 的话:
NOKIA1 NOKIA1
NOKIA NOKI3 写了 AND A.NAME != B.NAME 的话:
NOKIA NOKI3
我写这句本意是想排出记录跟自己比较的可能性。可是好像作用跟我想象的有出入……迷惑中请大家帮我指点迷津啊!拜谢!
2:效果是一样的,规范
3:AND A.NAME != B.NAME后NOKIA1 NOKIA1这条当然就不能选出来啦
2、效果是一样的。
3、你前面有个A.COLOR = B.NAME ,而有加了个AND A.NAME != B.NAME,间接使A.NAME != A.COLOR,你说呢。呵呵。