2010-03-10 70 views
2

查询:MySQL的多个查询

SELECT c.Name 
    FROM [Catagories] c 

    SELECT c.Name, 
      bc.CategoryName 
     FROM [Catagories] c 
INNER JOIN [Business_Categories] bc ON c.BusinessCategoryID = bc.BusinessCategoryID 

问题:为什么不让我必须把这个在WHERE条款?

+0

这是不是对你有用,或者你想知道如何以不同的方式做到这一点? – 2010-03-10 23:26:22

+0

Duplicate:http://stackoverflow.com/questions/2241991/in-mysql-queries-why-use-join-instead-of-where – 2010-03-11 00:40:59

回答

1

您可以在where子句中进行连接,但最好使用您拥有的语法。查询的

例子:

SELECT 
    c.Name, 
    bc.CategoryName 
FROM [Categories] c 
    [Business_Categories] bc 
WHERE 
    c.BusinessCategoryID = bc.BusinessCategoryID 
0

ON子句有点像一个WHERE,它过滤的结果,但它是编写查询,因为你是显示明确的是,一个更具表现力的方式条款两个表格以非常具体的方式相关。你可以写一个WHERE子句,它会给出相同的结果和相同的查询计划(假设优化器可以算出它),但为了清楚起见,建议使用JOIN。

在这种情况下,它并没有太大的区别,但是如果你有一个更复杂的查询和许多表,使用JOIN语法,你可以看到哪些表是相关的以及哪些字段。您还可以清楚地看到JOIN与用于过滤结果的WHERE子句之间的区别。如果您在WHERE子句中写入所有内容,可能会更容易混淆查看查询的意图。