带有和不带内连接的SQL查询

时间:2011-10-11 14:39:04

标签: sql sql-server

  

可能重复:
  Is it better to do an equi join in the from clause or where clause

我是SQL中的菜鸟,我有2个查询:

SELECT 
    A.COLUMN1,B.COLUMN2, C.COLUMN3
FROM
     TB_ITEM A,
     TB_ITEM_CAT B,
     TB_ITEM_SUBCAT C
WHERE
     A.COLUMN1 = B.COLUMN1
     AND A.COLUMN1 = c.COLUMN1

SELECT 
    A.COLUMN1,B.COLUMN2, C.COLUMN3
FROM
     TB_ITEM A 
INNER JOIN TB_ITEM_CAT B on A.COLUMN1 = B.COLUMN1
INNER JOIN TB_ITEM_SUBCAT C on A.COLUMN1 = C.COLUMN1

在第一个查询中,我们没有INNER JOINS,并从3个表中选择。 在第二个中,我们使用INNER JOINS进行相同的查询,并从3个表中进行选择。

他们应该显示相同的结果? 这些查询之间有什么区别?

3 个答案:

答案 0 :(得分:4)

它们在语义上是相同的。一个不错的优化器会认识到这是一个同样有效的计划。经验丰富的SQL编码器也会认识到这一点;)

Joe Celko引用,“至少有七种方法可以编写查询;只有两种方法值得 使用“。

答案 1 :(得分:1)

第一个查询 有内部联接。在FROM子句中,逗号是INNER JOIN的简写。

答案 2 :(得分:0)

阱,

我认为结果是一样的。但是,当您的SQL非常大时,使用INNER JOIN将帮助您组织查询。