日期:2014-05-16 浏览次数:20688 次
CREATE TABLE Classes ( ID VARCHAR2(20), NAME VARCHAR2(20) ); INSERT INTO Classes VALUES('0101', '1年1班'); INSERT INTO Classes VALUES('0102', '1年2班'); INSERT INTO Classes VALUES('0201', '2年1班'); INSERT INTO Classes VALUES('0202', '2年2班'); CREATE TABLE Student ( ID VARCHAR2(20), ClassID VARCHAR2(20), NAME VARCHAR2(20) ); -- 1年1班 INSERT INTO Student VALUES('010101', '0101', '张三'); INSERT INTO Student VALUES('010102', '0101', '李四'); -- 1年2班 INSERT INTO Student VALUES('010201', '0102', '张三'); INSERT INTO Student VALUES('010202', '0102', '王五');
------解决方案--------------------
--借用下表结构 :)
CREATE TABLE Student
(
ID VARCHAR2(20),
ClassID VARCHAR2(20),
NAME VARCHAR2(20)
);
-- 1年1班
INSERT INTO Student VALUES('010101', '0101', 'a');
INSERT INTO Student VALUES('010102', '0101', 'b');
-- 1年2班
INSERT INTO Student VALUES('010201', '0102', 'a');
INSERT INTO Student VALUES('010202', '0102', 'c');
select t.classid
from Student t
where t.name in ('a', 'b')
group by t.classid
having count(distinct t.name) = 2
像这种情况一般是在过程中使用。所以传入的'a', 'b'应该是个字符窜'a,b'
通过length(窜'a,b') - length(replace(窜'a,b', ',', '')) + 1
可以计算出窜'a,b'中姓名的个数。