#数据库相关问答数据库索引的作用和注意点④ 如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object
#数据库相关问答
数据库索引的作用和注意点
④ 如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误
?
再来一个比较强悍的贴(一下唤醒了我本科的数据库课...)原文:http://hi.baidu.com/kevinstudio2003/blog/item/45a67f37fffc943d0a55a9c0.html
?
FROM语句之结合条件
分为INNER JOIN,LEFT JOIN,RIGHT JOIN。结合条件一般分为内部结合和外部结合,INNER JOIN是内部结合,后两者为外部结合。LEFT就是表示全部保留左边表,RIGHT JOIN全部保留左边表。
条件式用ON来指定,如果多个条件,则用AND来连接
--例子:表foo和表bar以foo.a = bar.a 来实现内部结合
SELECT * FROM foo INNER JOIN bar ON foo.a = bar.a
三个以上的结合
三个以上表的结合是先结合两个表,然后将结果当作一个表再与另一个表结合。
--例子:将foo , bar , more 三表结合
SELECT * FROM ( foo INNER JOIN bar ON foo.a = bar.a )
INNER JOIN more ON foo.a = more.a
LEFT JOIN和 RIGHT JOIN
使用LEFT JOIN 和 RIGHT JOIN时,一定要注意位置。“foo LEFT JOIN bar ”就是将左边的foo表的所有行保留,匹配不上的显示NULL。反之,“foo RIGHT JOIN bar”就是将右侧的bar表全部保留,匹配不上的显示NULL。
--例子:将foo , bar 两表左结合
图1
FULL OUTER JOIN
完整外部连接,取包含所有左侧内容和右侧内容的数据。
需要注意的是MySQL,Access不能使用此功能
--例子:取上图foo,bar两表之FULL OUTER JOIN
SELECT * FROM foo FULL OUTER JOIN bar ON foo.a = bar.a
结果是:
图2
CROSS JOIN
交叉结合,取结合之表的全行数据,就好象是在连接两个表格时忘记加入一个WHERE子句一样。交叉结合时,没有结合条件。
注意,DB2,ACCESS不能使用此语句
--例子:取图1中foo,bar两表交叉结合。
SELECT * FROM foo CROSS JOIN bar
结果是:
图3
?