下列语句有什么不同?SELECT * FROM table1, table2 WHERE table1.id = table2.idSELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id

解决方案 »

  1.   

    第一句是找出table1和table2的ID相同的记录。
      

  2.   

    2个语句的效果是一样的,但是显现的过程不同,第一个是先把2个表作笛卡儿挤处理,然后按照where的条件抽出满足条件的记录,而第二个没有进行笛卡尔基处理
      

  3.   

    SELECT * FROM table1, table2 WHERE table1.id = table2.id
    返回table1,table2中ID相同的记录集SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id
    表示是内部联合,这种联合没有where语句。在这里你使用的语法中的JOIN ON 不是ANSI 标准中所指定的,而是我们所使用的解释器的附加语法.
    表示把table1,table2中ID相同的记录进行了组合.希望对你有帮助。
      

  4.   


    Inner Join
    Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。
    内联接是用比较运算符比较要联接列的值的联接。
    是不是,两SQL语句,内部查找的方法不一样呀?
    第一个,是分别读取两个表进来
      

  5.   

    效果是一样的。
    第一条是先取所有值再根据各自id是否相同来排他。第二条是根据各自id产生的交集来联结两表
      

  6.   

    一看你两星就知道问题不简单了在实际中,应该是第二个效率高一些,因为它使用两个关键字来连接两表,而不象第一个采用Where进行条件查询而且,第二条可以采用左联或右联来轻松实现更复杂的查询要求,语法上显得更直观,不需要设计很复杂的Where条件.
      

  7.   

    2个语句的效果是一样的,但是显现的过程不同,第一个是先把2个表作笛卡儿挤处理,然后按照where的条件抽出满足条件的记录,而第二个没有进行笛卡尔基处理这位朋友好像说反了.
    使用Join的语句是作笛卡尔积操作,但不是完全的关联,是根据Where条件关条的.根据我的理解.使用where A.ID=B.ID
    的方法,在A表中顺序查找,然后取出A.ID,到B表中按照索引去找B.ID,找到则提取记录到内存.
    而Inner Join的,我的理解是,呵,如果单纯的就是像你上边的一个条件的话,我认为道理是一样的.但是如果表比较多的话,我认为Join能提高性能!