mysql 衍生表必须有别名_MySQL中的错误“每个派生表必须具有自己的别名”是什么?...

本文讨论了在MySQL查询中遇到的'每个派生表必须具有自己的别名'错误,通过示例解释了错误原因并提供了解决方案。示例展示了如何为子查询添加别名以正确执行查询,同时强调了别名在多表操作和复杂查询中的重要性。
摘要由CSDN通过智能技术生成

我在MySQL上运行此查询

SELECT ID FROM (

SELECT ID, msisdn

FROM (

SELECT * FROM TT2

)

);

它给出了这个错误:

每个派生表必须具有自己的别名。

是什么导致此错误?

#1楼

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

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

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别名)。

#2楼

我认为这是在要求您这样做:

SELECT ID

FROM (SELECT ID,

msisdn

FROM (SELECT * FROM TT2) as myalias

) as anotheralias;

但是,为什么首先要编写此查询?

#3楼

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

SELECT ID FROM (

SELECT ID, msisdn FROM (

SELECT * FROM TT2

) AS T

) AS T

当然,对于您而言,整个查询可以替换为:

SELECT ID FROM TT2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值