mysql创建视图报错:View`s SELECT contains a subquery in the FROM clause

本文记录了一位新手在工作中遇到的MySQL创建视图时因SELECT语句包含子查询而导致的错误。通过将子查询转换为临时表,成功解决了问题。虽然觉得多出一张表不太理想,但目前这种方法确保了数据的正确性。欢迎分享更优解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下菜鸟在工作中遇到的问题。

问题:

创建视图的查询语句中包含子查询导致创建视图失败。

解决方法:

将子查询单独建表,然后把创建视图中的子查询语句替换成表。

(就这?就解决了?!!简直不要太 easy)

详细过程(哔哔赖赖过程):需要从mysql数据库中创建一张视图,查询语句需要联结表多张表,查询语句如下(精简后,保留其精髓哈哈):

select a.id,b.name from  a left join (select ip,name from c)  b on a.id = b.ip

在此实际情况中,如果把b表作为主表是可以避免使用子查询的,但数据量是否正确就无法保证了。因此,为保证数据量正确,必须a做主表,也就绕不开使用子查询了。
将子查询语句单独建表

create table b as select ip,name from c;

然后再联结

select a.id,b.name from a left join b on a.id = b.ip

经过以上的简单操作逻辑就解决问题了~

可能我有强迫症,总感觉一个查询就能得到需要的结果,然后顺理成章的创建视图,可偏偏被这子查询迫害到多出一张表,可恶。。。不知道有没有别的更好的解决方法,待我发现后再来更新。

菜鸟加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值