zoukankan      html  css  js  c++  java
  • 在SQLSERVER2000中对同一个数据库多张表进行查询时怎样避免笛卡儿乘积???

    在写join类型的语句的时候,最好使用join来代替直接用“,”分隔多个表。这样必须提供on条件才能进行查询。当然,join的条件一定要设置好,否则也会出现笛卡尔积的。

    比如tableA和TableB向关联的是ID字段

    如果用“,“分隔两个表的话语据应该如下

    select count(*)
    from tableA ,TableB
    where TableA.id=TableB.id

    如果把where 语句漏掉就出现笛卡尔积了
    select count(*)
    from tableA ,TableB

    同样,写成join的话,如果不指定on里的条件的话,语法是错的
    select count(*)
    from TableA join TableB
    on TableA.id=TableB.id

    但是如果再on里指定了一个错误的关联条件的话,也是会出现笛卡尔积的,比如:
    select count(*)
    from TableA join TableB
    on 1=1

    当然一般人不会闲得去把on条件设置成1=1,不过这是举个例子,就是为了说明on的筛选条件一定要设置好。
  • 相关阅读:
    java反射笔记
    Java常见异常类型
    找了这么多毕业设计题目,反而不知道选什么了
    C#中Trim()、TrimStart()、TrimEnd()的用法
    JS bom对象
    HTML随笔
    Sublim text3汉化
    11G RAC ORA-32701
    DB_LINK
    ORA-16957: SQL Analyze time limit interrupt
  • 原文地址:https://www.cnblogs.com/yhb199/p/1217572.html
Copyright © 2011-2022 走看看