现有表table
有字段a,d
用select count(distinct a) from table
select count(distinct d) from table
得到结果count(distinct a) 记录数大于 count(distinct d)
因为a 和 d 应该是一一对应关系,存在上诉结果是因为历史遗留问题。
请问各位前辈如何用SQL语句查出 1、d 对应的多个 a 2、多个 b 对应的 a.新手初次发贴,不知描述清楚没有...见谅。
有字段a,d
用select count(distinct a) from table
select count(distinct d) from table
得到结果count(distinct a) 记录数大于 count(distinct d)
因为a 和 d 应该是一一对应关系,存在上诉结果是因为历史遗留问题。
请问各位前辈如何用SQL语句查出 1、d 对应的多个 a 2、多个 b 对应的 a.新手初次发贴,不知描述清楚没有...见谅。
解决方案 »
- 删除一个学生表的记录,如果选课表有记录则提示错误的触发器如何写?
- 如pubs样例数据库的结构说明和表字段含义在哪里找?
- 为什么用while对表做循环,怎么不行???
- DECLARE @s VARCHAR(8000) 这样子定义一个SQL语句的长度,但实际中不够用,会自动截断,怎么办呢.
- 查询结果比较复杂的排序问题
- SQL 2000 Server中如何批量修改一个字段?
- sqlserver的小问题
- 怎么来判断一个字符型的值没有在1-7之间????
- 怪问题,请大虾帮忙!!!!
- 关于DTS的问题
- |zyciis| 晕 我SQL白痴,又记了怎么限定UserName表不能出现相同,谢谢
- sql 语句问题
这样说吧,本身应该是一一对应,因为没有更新后,没有清楚历史记录造成的。
a 和 d 是对应关系,但a、d、的值不同,我想大概意思就是差 table中 重复 的 a 记录
这样说吧,本身应该是一一对应,因为没有更新后,没有清楚历史记录造成的。
a 和 d 是对应关系,但a、d、的值不同,我想大概意思就是查 table中 相同值 的 a 记录
select a,d from table t1 where exists(select 1 from table where a=t1.a group by a having count(*)>1)
2.
上面把a,d互换.
insert into tb select 1,3 union all select 1,4 union all select 2,6 union all select 4,7 union all select 4,9 union all select 6,12
go
select a,d from tb t1 where exists(select 1 from tb where a=t1.a group by a having count(*)>1)
go
drop table tb
/*
a d
----------- -----------
1 3
1 4
4 7
4 9(4 行受影响)
*/
from table
group by b,a多个 b 对应的 a. select count(cnt)
from
(
select *,row_number()over(partition by b,a order by b) cnt
from table
) A
group by b,a