如何获取同一张表,所共有的那个条数据!
有这样一张数据表.他们都共同有一个科目就是语文,我如何获取这个数据呢?张三 语文 1张三 数学 2李四 语文 1李四 物理 3王五 语文 1王五 外语 4 而且这个表还有可能出现这样的情况他们都共同有两个科目就是语文,数学,我如何获取这个数据呢?张三 语文 1张三 数学 2李四 语文 1李四 数学 2王五 语文 1王五 数学 2 以上两种如何通过一种方式获取
select 科目from tbgroup by 科目having count(distinct 姓名) = (select count(distinct 姓名) from tb)
[解决办法]
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数学语文
[解决办法]
--> 测试数据:[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*/
[解决办法]
--> 测试数据:[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])--那用楼上的。你的要求是每个人都要有相同的才查出来,我这个是只要有人是相同的就会查出来