mysql跨库查询

使用背景:
这周分配的任务是做一个报表,报表里的有两个字段作为查询条件,是另一张表中的两个字段,但作为基表的表和这张表不在同一个数据库内,所以涉及到了跨库查询。

过程:
还好有同事刚做过跨库查询,询问后得知需要先在基表所在的库中创建一个视图(类似于一个根据查询结果组成的表),然后跟基表做关联查询,

SELECT “库名”.”表名”.”列名” AS “列的重命名”….. FROM “库名”.”表名”(同事告诉的代码公式)

但生产环境我们这些苦逼的程序员没有权限去创建视图,所以只能将视图的代码写在程序中。

    我把我的sql语句写到写到代码里后,运行、调接口、报错一气呵成,报SQL语句错误

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘.”表名”.”列名” AS “列名重命名”,’ at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
在我尝试运行同事的代码后,发现他的本地也运行不了,但是能在测试环境运行,因为是头一次做跨库查询,我很是害怕代码错误,一直想在本地测试一下。

    再一次偶然间我的代码不报错了

SELECT 库名.表名.列名 AS 列的重命名….. FROM 库名.表名
发现不用在库名和表名、列名前后添加“双引号”之后,在本地运行不再报错。

    上传测试环境后,莫名其妙开始报错,查询后发现之前的数据库账号只有当前库的访问权限,在申请并更换了有两个库权限的账号后,即可正常的使用报表

总结:
本次我是用的mysql跨库查询模式是,

    1.在代码中书写sql语句

SELECT 库名.表名.列名 AS 列的重命名….. FROM 库名.表名
2.数据库账号一定要有访问两个数据库的权限

转:https://blog.csdn.net/SimpleCow/article/details/80772813

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值