显示视图 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 - 将视图从一个数据库复制到另一个数据库时出错