在SQL别名中进行查询

时间:2016-04-23 10:04:26

标签: sql

以下SQL语句选择来自客户的CustomerID=4(“环绕号角”)的所有订单。我们使用CustomersOrders表,并分别为它们提供co的表别名。 (这里我们使用别名来缩短SQL):

SELECT o.OrderID, o.OrderDate, c.CustomerName
  FROM Customers AS c, Orders AS o
 WHERE c.CustomerName="Around the Horn"
   AND c.CustomerID=o.CustomerID;

考虑到我是初学者,你能解释一下这个语法。

3 个答案:

答案 0 :(得分:2)

这是上面代码的一个更简单的版本,没有使用Alias(b / c就是一开始让我感到困惑的事情)...如果没有别名,则如下所示读取代码要简单得多:

SELECT OrderID, OrderDate, CustomerName
FROM Customers, Orders
WHERE  Customers.CustomerID=Orders.CustomerID 

答案 1 :(得分:0)

SQL的变量参数是什么?如果它是一个文本"围绕着号角",那么SQL是正确的。无论如何总是使用id来过滤更好。如果你在以这种方式启动查询之前拥有id 4会更好:

SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Customers AS c, Orders AS o WHERE c.CustomerId=4 AND c.CustomerID=o.CustomerID;

你究竟要解释什么?你已经解释得很好了:))

别名如果要简化或在SQL中使用可能存在具有相同列名的表(就像你的那样),所以你要输入" tableAlias的前缀。"在列之前设置从哪个表中使用该列。换句话说,您可能会生成错误的"列模糊定义"。

干杯。

答案 2 :(得分:0)

使用SELECT语句,您可以告诉您需要哪些表格列。如果有更多表具有相同的列名,则还必须具体说明表名(tableName.columnName)。

使用FROM语句,您可以告诉要从中选择数据的表。在这个查询中有两个表与逗号分隔,这不是一个好主意,因为有JOIN语句以正确的方式合并两个表。

最后,使用WHERE语句,您可以告诉条件来过滤数据。在此查询中,您只需要name ='Around the Horn'的客户,并且您还要在客户和订单表中仅选择具有相同客户ID的行。 应使用FROM中的连接条件指定最后一个条件:

FROM Customer AS c JOIN Orders AS o ON c.CustomerID = o.CustomerID

否则使用FROM中的逗号,它会在两个表之间执行笛卡尔积,然后只选择具有第二个WHERE条件的正确行。

我建议你阅读初学者的SQL指南