MySQL中的错误“每一个派生表必须具备本身的别名”是什么?

我在MySQL上运行此查询 spa

SELECT ID FROM (
    SELECT ID, msisdn
    FROM (
        SELECT * FROM TT2
    )
);

它给出了这个错误: code

每一个派生表必须具备本身的别名。 it

是什么致使此错误? table


#1楼

这是一个不一样的例子,没有别名就不能重写(不能GROUP BY DISTINCT )。 软件

想象一下一个称为purchases的表,该表记录了customersstores进行的购买,即,这是一个多对多表,而且软件须要知道哪些顾客在多个商店中进行了购买: 引用

SELECT DISTINCT customer_id, SUM(1)
  FROM ( SELECT DISTINCT customer_id, store_id FROM purchases)
  GROUP BY customer_id HAVING 1 < SUM(1);

..将因错误而中断Every derived table must have its own alias 。 修理: 查询

SELECT DISTINCT customer_id, SUM(1)
  FROM ( SELECT DISTINCT customer_id, store_id FROM purchases) AS custom
  GROUP BY customer_id HAVING 1 < SUM(1);

(注意AS custom别名)。 tab


#2楼

我认为这是在要求您这样作: co

SELECT ID
FROM (SELECT ID,
             msisdn 
      FROM (SELECT * FROM TT2) as myalias
     ) as anotheralias;

可是,为何首先要编写此查询? block


#3楼

每一个派生表(AKA子查询)确实必须有一个别名。 也就是说,括号中的每一个查询都必须被赋予一个别名( AS whatever ),能够在外部查询的其他部分中使用它来引用它。

SELECT ID FROM (
    SELECT ID, msisdn FROM (
        SELECT * FROM TT2
    ) AS T
) AS T

固然,对于您而言,整个查询能够替换为:

SELECT ID FROM TT2
相关文章
相关标签/搜索