【TiDB 版本】
TiDB 5.0.1
【问题描述】
在TiDB 5.0.1版本,能够建立视图,但是访问视图内容时出错。
(1)建立3张表:专业表(zy_tab)、班级表(bj_tab)、学生表(st_tab)
drop table if exists zy_tab; – 专业表
create table if not exists zy_tab (
zy_code int, – 专业代码
zy_name varchar(100) – 专业名称
);
insert into zy_tab values (1,‘网络工程’);
insert into zy_tab values (2,‘机电工程’);
commit;
drop table if exists bj_tab; – 班级表
create table if not exists bj_tab (
bj_code int, – 班级代码
bj_name varchar(100), – 班级名称
bj_addr varchar(100), – 班级地址
bj_person_count int, – 班级人数
zy_code int – 专业代码
);
insert into bj_tab values (1,‘一班’,‘深圳’,2,1);
insert into bj_tab values (2,‘二班’,‘大连’,1,2);
commit;
drop table if exists st_tab; – 学生表
create table if not exists st_tab (
st_code int, – 学生代码
st_name varchar(100), – 学生姓名
bj_code int – 班级代码
);
insert into st_tab values (101,‘王小明’,1);
insert into st_tab values (102,‘李小红’,1);
insert into st_tab values (201,‘赵刚’,2);
commit;
(2)建立视图:
drop view if exists v_st_2;
create or replace view v_st_2
as
select st.st_name,bj.bj_name,zy.zy_name
from (
select bj_code, – 班级代码
bj_name, – 班级名称
zy_code – 专业代码
from bj_tab as b
where b.bj_code = 1
) as bj
left join zy_tab as zy on zy.zy_code = bj.zy_code
left join st_tab as st on bj.bj_code = st.bj_code;
(3)访问视图:
select * from v_st_2;
结果系统报告错误,不能正常访问视图内容:
1105 - line 1 column 150 near “AS
bj
LEFT JOINscott
.zy_tab
ASzy
ONzy
.zy_code
=bj
.zy_code
) LEFT JOINscott
.st_tab
ASst
ONbj
.bj_code
=st
.bj_code
”
时间: 0.003s
(4)补充说明:
在TiDB未升级,在TiDB 4.0.12版本时,可以正常访问视图内容,系统没有报告这个错误。