在MySQL中,应用“应用”是否是一种不好的做法;作为「;子查询(或派生表)的[tablename]?若然,原因为何? 在子查询中避免命名表的“AS”?

在MySQL中,应用“应用”是否是一种不好的做法;作为「;子查询(或派生表)的[tablename]?若然,原因为何? 在子查询中避免命名表的“AS”?,mysql,select,syntax,subquery,alias,Mysql,Select,Syntax,Subquery,Alias,大约一年前,我收到了以前MySQL的多个工作答案 我将从两个答案中提取一个片段并标记它们,而不是复制整个查询并占用空间。(除非你需要我) 两个答案都有效 答复1 第一个答案将用作命名表别名前面的,用作最高成本,将用作最低成本 为什么? 两个答案都有效,第二个答案指定为“避免使用”作为,但为什么 我使用作为作为派生表名已经有一段时间了,没有遇到任何问题。MySQL本身在其派生表的文档中显示了作为的使用,而派生表是 这归结于个人喜好吗?更好的表现?如果重要的话,第二个答案是由一个声誉超过80000的

大约一年前,我收到了以前MySQL的多个工作答案

我将从两个答案中提取一个片段并标记它们,而不是复制整个查询并占用空间。(除非你需要我)

两个答案都有效

答复1 第一个答案将
用作命名表别名前面的
用作最高成本,将
用作最低成本

为什么? 两个答案都有效,第二个答案指定为“避免使用
作为
,但为什么

我使用
作为
作为派生表名已经有一段时间了,没有遇到任何问题。MySQL本身在其派生表的文档中显示了
作为
的使用,而派生表是


这归结于个人喜好吗?更好的表现?如果重要的话,第二个答案是由一个声誉超过80000的用户提供的,他只回答了一个问题。所以我认为他是对的。可能我没有正确阅读MySQL文档。

我使用过的大多数数据库都允许别名带有或不带有
AS
,我认为这是ANSI标准的一部分。使用你喜欢的任何一个。@TimBiegeleisen你喜欢哪一个?我(大多数时候)不使用它,因为我发现它用一些不需要的东西来填充查询。我很好奇@GordonLinoff在这里会说些什么,所以我对你的问题投了赞成票。我从来没有用过。这是多余的,会中断我对查询的扫描。但这肯定是个人偏好。它不会对优化器产生重大影响,尽管如果运行EXPLAIN EXTENDED my query,然后运行SHOW警告,它总是会将这些警告以及那些讨厌的反标记添加回优化器
...
FROM   vendor
   inner join vendorparts on vendor.id = vendorparts.vendorid
   inner join part on vendorparts.partid = part.id
   inner join product on product.partid = part.id
   INNER JOIN (SELECT vendorparts.partid,
                      Max(vendorparts.lastcost) AS Highestcost
               FROM   vendorparts
               GROUP  BY vendorparts.partid) AS highestcost
           ON part.id = highestcost.partid
   INNER JOIN (SELECT vendorparts.partid,
                      Min(vendorparts.lastcost) AS Lowestcost
               FROM   vendorparts
               GROUP  BY vendorparts.partid) AS lowestcost
           ON part.id = lowestcost.partid
WHERE  vendorparts.lastcost <> 0 
...
FROM  vendor 
INNER JOIN vendorparts on vendor.id = vendorparts.vendorid 
INNER JOIN part on vendorparts.partid = part.id and 
INNER JOIN product on product.partid = part.id
INNER JOIN (SELECT vendorparts.partid,
                        Max(vendorparts.lastcost) AS Highestcost
                FROM   vendorparts
                GROUP  BY vendorparts.partid)  t1
            ON part.id = t1.partid
INNER JOIN (SELECT vendorparts.partid,
                        Min(vendorparts.lastcost) AS Lowestcost
                FROM   vendorparts
                GROUP  BY vendorparts.partid)  t2
            ON part.id = t2.partid
WHERE  vendorparts.lastcost <> 0