couId couName stuId
GQ1204001 岗前培训课程 12
ZQ1203001 证券业务 12
ZQ1203001 证券业务 123
JS1205001 课程 123上面是表的结构,现在我想选出所有课程不要重复,但选出的课程中必须包含stuId=123的记录,即选择证券业务时优先选择stuId=123的记录,同时岗前培训课程也要选上,求助各位大神,这个sql语句怎么写啊?(我用的hibernate进行查询)
GQ1204001 岗前培训课程 12
ZQ1203001 证券业务 12
ZQ1203001 证券业务 123
JS1205001 课程 123上面是表的结构,现在我想选出所有课程不要重复,但选出的课程中必须包含stuId=123的记录,即选择证券业务时优先选择stuId=123的记录,同时岗前培训课程也要选上,求助各位大神,这个sql语句怎么写啊?(我用的hibernate进行查询)
“distinct ”去重复。搂着试一试,看看能不能解决问题!
select * from 选课表 c where c.couName in (select distinct c.couName from 选课表 c) and c.stuId = 123;
我把and改成or就有重复的,在第一个select那加一个distinct couName 也不管用,这是怎么回事啊
为什么不行,那你就把in里面的循环拼接,换成or,不过这两种应该是等同的。
光输出couName时到没有重复的了,但再加几个属性的话就重复的了,难道distinct是作用于所有属性吗?
GROUP BY couId
HAVING COUNT(couId )=1
UNION
SELECT * FROM 表名
WHERE couId NOT IN
(SELECT couId FROM 表名
GROUP BY couId
HAVING COUNT(couId)=1)
AND stuId=123
课程名必须不重复,加个distinct,应该不难。不知道我理解的有问题,还是楼主把意思没表达清楚。
我还进行分页,如果写成两条语句的话不好分页,用本地sql可以吗?如果可以的话怎么配置啊?我配了好长时间老是不行总报错!!!!!