这个INNER JOIN
关键字选择在两个表中具有匹配值的记录。
我们来看看其中的精选产品表格:
ProductID | ProductName | CategoryID | Price |
---|---|---|---|
1 | Chais | 1 | 18 |
2 | Chang | 1 | 19 |
3 | Aniseed Syrup | 2 | 10 |
以及精选的类别表格:
CategoryID | CategoryName | Description |
---|---|---|
1 | Beverages | Soft drinks, coffees, teas, beers, and ales |
2 | Condiments | Sweet and savory sauces, relishes, spreads, and seasonings |
3 | Confections | Desserts, candies, and sweet breads |
我们将使用以下方法将“产品”表与“类别”表连接起来:CategoryID
两个表中的字段:
使用 INNER JOIN 关键字连接产品和类别:
SELECT ProductID, ProductName, CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;
亲自试一试 »
笔记:这个INNER JOIN
关键字仅返回两个表中匹配的行。这意味着,如果您的产品没有 CategoryID,或者 CategoryID 不存在于“类别”表中,则该记录不会在结果中返回。
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
在 SQL 语句中指定列时最好包含表名。
指定表名:
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
INNER JOIN Categories ON Products.CategoryID = Categories.CategoryID;
亲自试一试 »
上面的示例无需指定表名即可运行,因为两个表中均不存在指定的列名。如果您尝试包含CategoryID
在里面SELECT
语句中,如果不指定表名,将会报错(因为CategoryID
两个表中均存在)。
JOIN
和INNER JOIN
将返回相同的结果。
INNER
是默认的连接类型JOIN
,所以当你写JOIN
解析器实际上写的是INNER JOIN
。
JOIN 与 INNER JOIN 相同:
SELECT Products.ProductID, Products.ProductName, Categories.CategoryName
FROM Products
JOIN Categories ON Products.CategoryID = Categories.CategoryID;
亲自试一试 »
以下 SQL 语句选择包含客户和发货人信息的所有订单:
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);
亲自试一试 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!