sql联合查询UNION问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql联合查询UNION问题相关的知识,希望对你有一定的参考价值。
小弟用JSP编写网页其中DJ,FILE是两个表个查一列数据
rs = stmt.executeQuery("SELECT data FROM dj union select num from file");
用这个读DATA数据结果可以
<%= rs.getString("data") %>
但读FILE数据时就出错
<%= rs.getString("file") %>请问应该怎么写啊怎么才能读取FILE表里的数据呢
我想对两个表里的两列数据分别显示在网页的两列里
DATA显示一列NUM显示一列
rs = stmt.executeQuery("SELECT data FROM dj union select num as data from file");
这样为num制定了别名data
在调用的时候只要
<%= rs.getString("data") %>
就可以把两个表的数据调出来了
另外如果两个表含有相同数据,用union会排除重复项的,如果你不想排除,把union 改为union all 参考技术A 你并没有选择file列啊
SELECT data,file FROM dj union select num from file 参考技术B 你把两个表结构都写出来。
我猜想你用错SQL语句,看你的要求,很可能是将两个表连接起来,
应该用JOIN,sql语句类似于:
SELECT dj.data,file.num
FROM dj inner join file
on dj.字段=file.字段
祝你好运!
SQL Union Query - 两个访问表
【中文标题】SQL Union Query - 两个访问表【英文标题】:SQL Union Query - two access tables 【发布时间】:2019-03-06 09:14:02 【问题描述】:我在 MS Access 中有两个相同的查询,qryLabour
和 qryMaterials
。我需要从三个字段中获取总数:Labour Mins
、Laser Mins
和 $ Cost
。
我知道这可以使用联合查询来完成,但我已经很久没有使用联合查询了,而且我不断收到“FROM 语句错误”。
我的 SQL 是:
SELECT sum(TotalLabour) as TotalLabour,sum(TotalCost) as TotalCost,sum(TotalLaser) as TotalLaser
FROM
(
SELECT Sum([qryLabour].[Labour Mins]) AS TotalLabour, Sum([qryLabour].[$ Cost]) AS TotalCost, Sum([qryLabour].[Laser Mins]) AS TotalLaser
FROM qryLabour;
union all
SELECT Sum([qryMaterial].[Labour Mins]) AS TotalLabour, Sum([qryMaterial].[$ Cost]) AS TotalCost, Sum([qryMaterial].[Laser Mins]) AS TotalLaser
FROM qryMaterial;
)
请有人告诉我哪里出错了?如果我删除***“选择”语句,我会得到两行,其中包含总计,这是我添加***语句以合并两者的时候。
【问题讨论】:
可能通过将别名放在右括号中将解决问题) M
但不确定
删除那些分号。 (;
)
【参考方案1】:
请注意,但我认为您需要一个别名:
SELECT sum(u.TotalLabour) as TotalLabour,sum(u.TotalCost) as TotalCost,sum(u.TotalLaser) as TotalLaser
FROM
(
SELECT Sum([qryLabour].[Labour Mins]) AS TotalLabour, Sum([qryLabour].[$ Cost]) AS TotalCost, Sum([qryLabour].[Laser Mins]) AS TotalLaser
FROM qryLabour
union all
SELECT Sum([qryMaterial].[Labour Mins]) AS TotalLabour, Sum([qryMaterial].[$ Cost]) AS TotalCost, Sum([qryMaterial].[Laser Mins]) AS TotalLaser
FROM qryMaterial
) as u
编辑:同时删除“;”在子查询中,正如@jarlh 建议的那样
【讨论】:
【参考方案2】:谢谢杰迪普。
我实际上只是想通了,我在内部 SELECT
语句的末尾有 ;
,我删除了它,并使父 SELECT
中的名称唯一。现在工作得很好。
所以正确的代码是:
SELECT sum( tempTotalLabour) as TotalLabour,sum( tempTotalCost) as TotalCost,sum( tempTotalLaser) as TotalLaser
FROM
(
SELECT Sum([qryLabour].[Labour Mins]) AS tempTotalLabour, Sum([qryLabour].[$ Cost]) AS tempTotalCost, Sum([qryLabour].[Laser Mins]) AS tempTotalLaser
FROM qryLabour
union all
SELECT Sum([qryMaterial].[Labour Mins]) AS tempTotalLabour, Sum([qryMaterial].[$ Cost]) AS tempTotalCost, Sum([qryMaterial].[Laser Mins]) AS tempTotalLaser
FROM qryMaterial
) ;
干杯 克里斯
【讨论】:
以上是关于sql联合查询UNION问题的主要内容,如果未能解决你的问题,请参考以下文章