显示视图 sql 时出错

Posted

技术标签:

【中文标题】显示视图 sql 时出错【英文标题】:Error while displaying a view sql 【发布时间】:2013-11-14 22:32:05 【问题描述】:

我创建了一个带有 SQL 查询的视图:

CREATE VIEW rightview
AS 
SELECT data.accounts.login,data.accounts.password,data.customers.right_
FROM data.accounts join data.customers using (id);

当我点击执行查询时,它表明视图已成功创建。但是当我尝试用这个查询显示它的列时

select * from data.rightview;

我收到了这个错误:

错误代码 1356,SQL 状态 HY000:查看“data.rightview”引用 无效的表或列或函数或定义者/调用者 查看无权使用它们

【问题讨论】:

就像消息说的那样,您正在尝试引用不存在的表或列。仔细检查名称是否正确。在创建视图之前尝试执行 SELECT 查询 【参考方案1】:

恕我直言,更好的是:

CREATE VIEW rightview
AS
SELECT acc.login, acc.password, cust.right_
FROM data.accounts acc
LEFT JOIN data.customers cust on acc.id=cust.id

如果表客户包含引用表帐户的列 ID...

【讨论】:

通过 Kenda 的查询,我得到一行充满登录名和 apssword 但正确为空的行 如果您有“主”表,请使用左连接。左连接将表行和列附加到主表。因此,如果您有 2 行的表 A 和 2 行的表 B 属于表 A 的 1 行,那么您将得到 3 行。第一行将是 A1+B1,第二行是 A1+B2,第三行只有 A2+null 另一方面,如果您有 2 个表并且需要选择行,则使用 JOIN,这两个表都会受到影响。【参考方案2】:

尝试使用表别名

CREATE VIEW rightview
AS 
SELECT account.login,account.password,customer.right_
FROM data.accounts as account join data.customers as customer using (id);

select * from rightview;

【讨论】:

感谢 Madhivanan 的回答,我可以看到视图的列,但它们是空的 表示没有与表匹配的行 怎么来的??这就是我的桌子的样子: 你能发布一些示例数据吗? 当我从客户中执行 Select * 时,两行已填满了表帐户中的另外两行但视图右视图显示为空。列存在但没有行【参考方案3】:

试试这个..

CREATE VIEW rightview
AS SELECT a.login,a.password,b.right_
FROM accounts a INNER JOIN customers b
on a.id = b.id;

那么,

select * from rightview;

会起作用..

【讨论】:

【参考方案4】:

我遇到了同样的错误。我解决了从原始数据库中的原始视图处理所有代码并粘贴到 bkp_db 创建其他视图...

【讨论】:

以上是关于显示视图 sql 时出错的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2012 将数据类型 varchar 转换为数字时出错

Oracle SQL Developer - 将视图从一个数据库复制到另一个数据库时出错

从超级视图中删除视图时出错

当我在 c# sql 的 listview 中插入多个产品时出错。怎么了?

Swiftui - 显示解码数据以查看时出错

在颤振中使用列表视图搜索数据时出错