当前位置: 首页 > 知识库问答 >
问题:

在mysql中使用子查询创建视图的问题

步嘉德
2023-03-14

我想创建一个名为indiversal_info的视图,该视图显示个人的所有信息,除了他们的客户ID之外,还列出每个人在他/她的帐户中有多少余额。

我的疑问是:

Create VIEW individual_info AS
Select FIRST_NAME, LAST_NAME, BIRTH_DATE, (Select MAX(AVAIL_BALANCE)
AS Total_Balance
FROM ACCOUNT
where CUST_ID < 10
GROUP BY CUST_ID) from INDIVIDUAL;

现在,这个查询将创建视图,但当我想通过以下命令查看该视图中的信息时:

select * from individual_info;

它将返回一个错误:

ERROR 1242 (21000): Subquery returns more than 1 row

如何走出这个误区?

共有1个答案

吴凯
2023-03-14

问题是子查询按cust_id分组,因此返回每个cust_id<10(?)的最大值。您需要的是一个相关查询,我假设表INTIVERATION中有一个cust_id,因此您的视图应该是这样的:

Create VIEW individual_info AS
Select FIRST_NAME, LAST_NAME, BIRTH_DATE, (Select AVAIL_BALANCE
AS Total_Balance
FROM ACCOUNT as a
where a.CUST_ID = i.cust_id) 
from INDIVIDUAL as i

注意:您也可以使用连接而不是相关查询(这将是我的首选):

CREATE VIEW individual_info AS
SELECT FIRST_NAME, LAST_NAME, BIRTH_DATE, coalesce(AVAIL_BALANCE,0)
AS Total_Balance
FROM INDIVIDUAL i
LEFT JOIN ACCOUNT a
ON a.CUST_ID = i.cust_id

我包括合并的情况下,没有帐户记录的一些个人,如果是这样的话,这些将显示为0余额

 类似资料:
  • 本文向大家介绍Drupal 8:在视图中创建子查询,包括了Drupal 8:在视图中创建子查询的使用技巧和注意事项,需要的朋友参考一下 您以前可能去过那里。您正在使用的Drupal View看起来很棒,并且具有您需要的所有数据和字段,但是当您仔细查看结果时,您会发现有些问题。查看生成的SQL查询后,您会发现其中一个联接存在问题,这会导致计数减少。最终,您需要删除此联接,但实际上您需要包含在结果中的

  • 我有5个SQL表 存储 工作人员 部门 SOLD_Items staff_rating 我创建了一个视图,将这四个表连接在一起。最后一个表(staff_rating),我希望在接近项目被出售的时间(sold_items.date)获得视图行的rating列。我尝试了以下SQL查询,这些查询工作正常,但存在性能问题。 SQL查询1 SQL查询2 SQL查询%2比SQL查询%1快。但这两种方法都存在性

  • 主要内容:基本语法,创建基于单表的视图,创建基于多表的视图,查询视图创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。 基本语法 可以使用 CREATE VIEW 语句来创建视图。 语法格式如下: CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下。 :指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。 :指定创建视图的 SELECT 语句,可用于查询多个基础表或源

  • 问题内容: 我需要创建一个视图,该视图具有一个名为row_num的列,将在其中插入行号,就像在普通表中自动递增一样。 假设我有这个普通表: 等等… 我要创建的视图是: 等等… 我可以通过一次选择生成row_num: 但是我的问题是将上面的查询与创建视图的查询结合起来。这是我正在尝试的组合查询: 我收到以下错误:#1351-视图的SELECT包含变量或参数 我知道我不能在带有视图的选择内使用选择,但

  • 问题内容: 我想以这样的方式串联列名:列名的第一部分是一个字符串,第二部分是一个数字,这是另一个查询的结果。 例如: 能以某种方式做到这一点。这样,它不会给我带来错误,但是我没有得到预期的结果,并且似乎串联不起作用。 问题答案: 我之前曾说过无法做到这一点,但是我错了。我本人最终需要这样的东西,所以我环顾四周,发现服务器端准备好的语句使您可以从字符串构建和执行任意SQL语句。 这是我只是为了证明这

  • 我有这个问题。我希望它从内容表中选择4个条目,并按如下方式对条目进行排序: > 选择最近的条目。它表示按日期排序(mysql datetime)DESC,id DESC。 从这4个选定项中,按likes(mysql INT)DESC排序 运行查询时,它返回错误的结果。它选择与此条件匹配的条目,其中主题='id'和活动='1'。它按likes DESC对条目进行排序,但忽略了这个条件,即按日期DES