一对多查询提取不重复值
2023-01-24阅读(281)
问:SQL 在一对多的表格中执行多表查询,我不想内容重复,凡是一对多的我都取第一个值,我该怎么写。
- 答:select a.id , ---或者其他个人信息
count(d.xx_id),--应有考勤数量
sum(nvl(d.countid,0)) --实际考勤数量
from a , (select b.xx_id,count(c.id) countid from b,c where b.id = c.kj_id(+) group by b.xx_id ) d
where a.id = xx_id(+)
group by a.id
以上为oracle写法(+)表示外关联。
问:excel一对多查询,显示为一行但不显示重复值
- 答:使用删除重复值功能来处理。拖动选中这一列相同的数据按合并及居中按钮出现对话框:选定区域包含多重数据,合并到一个单元格后会只显示左上角的数据。按确定。
问:sql 怎么取不重复的数据的所有数据
- 答:SQL数据重复分几种情况,一种是原数据重复,第二种是粒度重复,第三种是分布重复。
原数据重复的情况,你直接可以distinct掉,例如,学生表当中有两个重复的学号,你想取出不重复的,直接可以写:select
distinct
学号
from
学生表
第二种是查询粒度重复,比如你有一张表是存储区域的,分别为省、市、县三列。而你需要的是只查找不同的省市,则也可以使用distinct:select
distinct
省,市
from
区域
第三种则是分布重复,比如在join
的时候,左右两个表格存在一对多的关系,造成的重复,或者在聚合之后出现了维度重复,则这种相对来说比较麻烦,你需要在子查询中统计或查找出唯一值,然后再去关联,或者是按照一定的数据需求的取数规则,在查询结果后再进行聚合,取到唯一值。
不过不管怎么样,都是要看实际需求是什么样子的。大多可以用子查询和关联联合解决。 - 答:表table1(a,
b),a列是主键,b是你说的关键字段。
假设你要插入一条新记录(a1,
b1):
/*
判断数据库中是否有b=b1的记录
*/
//
此sql语句取出数据库中所有b=b1的记录
string
sql
=
"select
*
from
table1
where
b=b1";
mand
cmd
=
new
mand(cmd,
sqlconnection);
//
运行sql语句,并获得结果集
resultset
rs
=
cmd.exec();
if
(rs.next())
{
//
rs存在记录,不要插入
}
else
{
//
rs不存在记录,即数据库中没有b=b1的项,可以插入。
}
不记得c#的类名了,以上代码希望能达意