数据库-sql查询结果重复问题 是否表结构设计问题

问题描述

sql查询结果重复问题 是否表结构设计问题

信息表a
sid scope_type begin_date end_date
1 3
2 2
3 1

scope_type(1:按全部;2:按渠道;3:按机构)

范围表b
tid sid channel org_id
1 1 1 null
2 1 3 null
3 1 101

1.两表通过sid关联,没有设外键,
2.新增记录时,先写表a,再写表b
3.当scope_type=1时,则只需a表新增1条记录.
当scope_type不为1时,在a表新增1条记录,b表根据选择的机构和渠道,新增记录.
如选择了机构101,102,渠道1
则b表新增3条记录
4.查询时,根据时间范围,查出的结果有重复的,求解

 select
b.*
from a, b
where a.sid = b.sid(+)
and a.sid = 1
and begin_date > ?
and end_date <= ?

ps:我考虑到两个方面:
1.表结构设计问题
2.sql方面

解决方案

 select
distinct b.*  --distinct一下吧,
from a, b
where a.sid = b.sid(+)
and a.sid = 1
and begin_date > ?
and end_date <= ?

解决方案二:

不想使用distinct,而且distinct也不行的,我试过

  select
b.*
from a, b
where a.sid = b.sid(+)
and begin_date > ?
and end_date <= ?

解决方案三:

问题描述得不够清楚
对于上面你提供的2个表的已有数据及你的SQL语句,你期望得到什么样的查询结果?
请写出来

解决方案四:

我要查出的结果没有重复的,即一个sid显示一条记录,但这两张表的关系是一对多,关联里面有多条记录

解决方案五:

将表t1和t2关联后,结果集中确实是存在三个“t1.sid=1”的记录呀
对于这三条记录,这三条记录不重复呀

解决方案六:

如果你想得到一条记录,除非t2表中sid=1的记录仅有一条,你现在的数据是:
在t2表中,sid=1的记录有3条,你却想要得到一条记录?请指出想要显示的是这三条中的哪条记录。
或者你想对这三条记录按sid分组?

时间: 2025-01-21 04:05:44

数据库-sql查询结果重复问题 是否表结构设计问题的相关文章

sql查询出现重复数据!!

问题描述 sql查询出现重复数据!! 想让查询结果里这个字段create_time或者content不重复,应该怎么加DISTINCT 啊 select town_name,id,tid,username,userid,school_id,school_name,class_name,send_id, content,create_time,mphone,is_read,need_revert,send_type,msg_type,parent_id, file_name,file_path,s

数据库查询-数据库 关联查询 给予参数 两张表

问题描述 数据库 关联查询 给予参数 两张表 有表一 ID name 表二 ID address 1 123 1 2333 2 456 2 111233 3 3445 4 5667778 两张表通过 内连接 select * from 表1 inner join 表2 course on 表1.ID= 表2.ID 显示 共有的 ID name address 1 123 2333 2 456 111233 我现在我想通过表2的ID 1 查询 表1 的 name 值 sql 语句应该怎么写? 新手

[数据库] SQL查询语句表行列转换及一行数据转换成两列

本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法.子查询的应用.decode函数的用法.希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同性质的学生总数 3.一行数据转换成两列数据 union all 4.表行列数据转换(表转置) 1.创建数据库表及插入数据 创建数据库.创建学生表并设置主键.插入数据代码如下: --创建数据库 create database StudentMS --使用数据库 use StudentMS --创建学生

sql查询表里重复记录现取重复最后一条记录方法

SQL语句去掉重复记录,获取重复记录  --查询一个表中有效去掉重复的记录,UserID为自增长主键,RoleID为重复字段  代码如下 复制代码 SELECT MIN(UserID) AS UserID, RoleID FROM tmpTable GROUP BY RoleID SELECT RoleID FROM tmpTable GROUP BY RoleID HAVING (COUNT(*) > 1) SELECT DISTINCT * FROM tmpTable sql语句查询 sql

百万级mysql数据库sql查询语句优化方案

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放

server数据库-SQL查询添加临时标识列

问题描述 SQL查询添加临时标识列 在做一个排行查询,但是数据没有标识列,所以想在查询的时候加一条临时的标识列,该怎么写sql语句呢? 解决方案 为查询结果添加一个标识列 解决方案二: MYSQLhttp://blog.csdn.net/ijong/article/details/7068265 SQL_SERVERhttp://www.2cto.com/database/201205/132643.html

oracle数据库,SQL查询变慢

问题描述 我有条sql语句如下:select his.history_id,his.modifydate,his.organization_id,point.unitname,his.state,his.servertype from anhuipmc.fee_history a,anhuipmc.fee_history his,anhuipmc.meshPoint_info point where his.organization_id=trim(point.unitCode(+)) and

SQL 查询不重复

问题描述 我有一张Product表,ID设为主键,ID,Title,Text1,class,SHIJIAN我用DropDownList1绑定后会出现重复的值,我绑定的字段是SHIJIAN,怎么把重复的值筛选出来, 解决方案 解决方案二:distinct解决方案三:???貌似今天上午你问了一个同样的问题解决方案四:不写代码直接可视化操作的绑定?把sql语句改一下加个distinct

oracle常用sql查询语句部分集合(图文)_oracle

Oracle查询语句 select * from scott.emp ; 1.--dense_rank()分析函数(查找每个部门工资最高前三名员工信息) select * from (select deptno,ename,sal,dense_rank() over(partition by deptno order by sal desc) a from scott.emp) where a<=3 order by deptno asc,sal desc ; 结果: --rank()分析函数(