首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么获取同一张表,所共有的那个条数据

2012-06-22 
如何获取同一张表,所共有的那个条数据!SQL code有这样一张数据表.他们都共同有一个科目就是语文,我如何获

如何获取同一张表,所共有的那个条数据!

SQL code
有这样一张数据表.他们都共同有一个科目就是语文,我如何获取这个数据呢?张三    语文    1张三    数学    2李四    语文    1李四    物理    3王五    语文    1王五    外语    4 而且这个表还有可能出现这样的情况他们都共同有两个科目就是语文,数学,我如何获取这个数据呢?张三    语文    1张三    数学    2李四    语文    1李四    数学    2王五    语文    1王五    数学    2 以上两种如何通过一种方式获取


[解决办法]
select 科目 FROM 表 group by 科目 having count(人名)>=3 (不知道这个3,是能确定的不)
[解决办法]
SQL code
select 科目from tbgroup by 科目having count(distinct 姓名) = (select count(distinct 姓名) from tb)
[解决办法]
SQL code
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')BEGIN    DROP TABLE tbaENDGOCREATE TABLE tba(    name VARCHAR(100),    subject VARCHAR(100),    subjectid INT)GOINSERT INTO tbaSELECT '张三',   '语文',    1 UNIONSELECT '张三',    '数学',    2 UNIONSELECT '李四',    '语文',    1 UNIONSELECT '李四',    '数学',    2 UNIONSELECT '王五',    '语文',    1 UNIONSELECT '王五',    '数学',    2GOSELECT subjectFROM tbaGROUP BY subjectHAVING COUNT(1) = (SELECT COUNT(distinct name) FROM tba)subject数学语文
[解决办法]
SQL code
--> 测试数据:[test]if object_id('[test]') is not null drop table [test]create table [test]([name] varchar(4),[course] varchar(4),[value] int)insert [test]select '张三','语文',1 union allselect '张三','数学',2 union allselect '李四','语文',1 union allselect '李四','物理',3 union allselect '王五','语文',1 union allselect '王五','外语',4select * from test awhere  exists(select 1 from test b where a.name<>b.name and a.course=b.course)/*name    course    value-----------------------------张三    语文    1李四    语文    1王五    语文    1*/--> 测试数据:[tbl]if object_id('[tbl]') is not null drop table [tbl]create table [tbl]([name] varchar(4),[course] varchar(4),[value] int)insert [tbl]select '张三','语文',1 union allselect '张三','数学',2 union allselect '李四','语文',1 union allselect '李四','数学',2 union allselect '王五','语文',1 union allselect '王五','数学',2select * from [tbl] awhere  exists(select 1 from [tbl] b where a.name<>b.name and a.course=b.course)/*name    course    value张三    语文    1张三    数学    2李四    语文    1李四    数学    2王五    语文    1王五    数学    2*/
[解决办法]
SQL code
--> 测试数据:[test]if object_id('[test]') is not null drop table [test]create table [test]([name] varchar(4),[course] varchar(4),[value] int)insert [test]select '张三','外语',1 union allselect '张三','物理',2 union allselect '李四','语文',1 union allselect '李四','数学',2 union allselect '王五','语文',1 union allselect '王五','数学',2select [course]from [test]group by [course]having count(distinct [name])=(select count(distinct [name]) from [test])--那用楼上的。你的要求是每个人都要有相同的才查出来,我这个是只要有人是相同的就会查出来 

热点排行