求一条HQL语句,关于not in的惯例100分!!!
现有两张表1试题:choice,中间表2: paperchoice 两表是多对多的关系 choice中有choiceId title 字段,choiceId是主键
paperchoice中有paperId choiceId字段为联合主键
现在要查询所有不在中间表中的试题 就是只要中间表有的 就不显示 唉表达的不清楚 用例子说明吧
choice: choiceId title paperchoice: paperId choiceId
1 111 7 1
2 222 7 2
3 333 8 1
4 5555 8 3
5 888 8 4
6 9999
需要的结果是 : choice: choiceId title
5 888
6 9999
就这样子了 SQL语句也行 HQL语句也行 都有是最好 多学习点~~呵呵
------解决方案--------------------
稍微改一下就可以了。。。
SQL code
select choiceId, title
from choice
where choiceId not in (select distinct(choiceId) from paperchoice where paperId = 7)
------解决方案--------------------
select * from choice c where not exists(select 1 from paperchoice p where p.choiceId = c.choiceId and paperId = 7)
建议,能不用in 或 not in就不用,用exists或not exists来代替,in的性能太差!