NutzCN Logo
问答 怎个SQL语句的问题
发布于 2613天前 作者 qq_7daed8bc 3436 次浏览 复制 上一个帖子 下一个帖子
标签: dao

User表中有一列叫type 值有:1(VIP用户)、2(年费用户)、3(包月用户)、4(普通用户)

现在想查询表中满足某些条件的用户,具体条件是:
优先检索是否有type=1的,如果有,仅返回type=1的用户;如果没有type=1的,优先查询type=2的,如果有则返回,如果没有则查询type=3的。。。

数据库是MySQL。小弟最近才开始学习Java,对数据库这块尤其不熟,请前辈们多多指点,谢谢!

9 回复

如果能用nutz写就更好啦,哈哈

根据type排序,然后取第一条咯

但是type=1的用户可能有多个 也可能没有。我想把所有用户都查出来,然后用Java去遍历判断
如果用数据库能直接查询的话,效率应该比遍历高吧?

排序不行吗?

排序应该不行吧,如果type=1的有十条,type=2的有20条,那这种情况下,这30条数据都会返回的,但是现在只要type=1的那10条

哦,原来是符合type条件的全部记录,那就先用group by 统计数量吧

好了 搞定了,用case when

select * from BT_TIME where MER_ID = '073cfdf90fba4bd5883ba473309c3990' and (
case

when (select count(*) from BT_TIME where WEEK in (1,2,3,4,5,6,7) > 0) then WEEK=1
when (select count(*) from BT_TIME where WEEK=8 > 0) then WEEK=8 
when (select count(*) from BT_TIME where WEEK =0 > 0) then WEEK=0

end) order by WEEK,START_TIME;

这个WEEK 就是我上面说的user表里的type,他的取值范围是0-8,但是这个用nutz.dao咋写?只能自定义sql了吧

cnd.and(new Static("......."));

好的 我知道了 多谢前辈

添加回复
请先登陆
回到顶部