mysql查错误`Error Code: 1248. Every derived table must have its own al ...

打印 上一主题 下一主题

主题 1867|帖子 1867|积分 5601

在查询的时候,特别是有子查询、多表查询的时候遇到的这个错误 `Error Code: 1248. Every derived table must have its own alias` , MySQL 数据库报出的这个错误翻译一下就是:每一个派生表都必须有自己的别名。下面来具体表明错误原因并给出解决方案。


### 错误原因

在 SQL 中,派生表(也就是子查询返回的效果集)必须要有一个别名。这是因为数据库需要一个名称来引用这个子查询的效果,以便在外部查询中对其进行操作。在你提供的 SQL 语句里,子查询没有别名,所以 MySQL 无法识别它,从而抛出了这个错误。


### 解决方案

给子查询添加一个别名即可。以下是修改后的 SQL 语句:

```sql

SELECT *

FROM (

    SELECT

        stock_code AS stock_code,

        trade_date AS trade_date,

        convertible_premium_rate AS convertible_premium_rate,

        ROW_NUMBER() OVER (PARTITION BY stock_code, trade_date ORDER BY convertible_premium_rate) AS row_num from t1_kezhuanzhai_con_pre_rate

) AS subquery;

```

### 代码表明

- 在子查询 `(SELECT ... )` 背面添加了 `AS subquery`,这里的 `subquery` 就是子查询的别名。通过这个别名,外部查询就可以引用子查询返回的效果集了。

- 这样修改后,SQL 语句就能正常执行,你可以从子查询天生的效果集中选择所有列的数据。


如果你后续还需要对这个效果集进行筛选或者其他操作,也可以基于这个别名来进行,比方:

```sql

SELECT *

FROM (

    SELECT

        *,

        ROW_NUMBER() OVER (PARTITION BY stock_code, trade_date ORDER BY convertible_premium_rate) AS row_num from t1_kezhuanzhai_con_pre_rate

) AS sub

WHERE row_num = 1;

上述代码会从子查询的效果集中筛选出 `row_num` 即是 1 的记载。




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表