比如我又一张员工表,userid,userage,usersalary
userid就是用户的姓名,作为主键.
如果要检索mike,nill,rose三个用户时,很简单
select * from userlist where userid in('mike','nill','rose')但是现在出现了一个问题,有三个员工都叫mike,分别属于不同的部门,研发部(tech),宣传部(advise),市场部(et).
为了防止主建重复,于是在该表中添加了一个字段叫userDepartment,只有提供userid和userdepartment时候才能唯一的确定一个用户
然后我还是要检索mike,nill,rose这三个用户,但这时候的where in就不能用一个字段了,而必须是两个字段,大概应该是下面的样子吧,但是这样肯定是不对的,我运行不下去
select * from userlist where (userid,userDepartment) in ('mike,tech','nill,advise','Rose,et') 高手指教啊
userid就是用户的姓名,作为主键.
如果要检索mike,nill,rose三个用户时,很简单
select * from userlist where userid in('mike','nill','rose')但是现在出现了一个问题,有三个员工都叫mike,分别属于不同的部门,研发部(tech),宣传部(advise),市场部(et).
为了防止主建重复,于是在该表中添加了一个字段叫userDepartment,只有提供userid和userdepartment时候才能唯一的确定一个用户
然后我还是要检索mike,nill,rose这三个用户,但这时候的where in就不能用一个字段了,而必须是两个字段,大概应该是下面的样子吧,但是这样肯定是不对的,我运行不下去
select * from userlist where (userid,userDepartment) in ('mike,tech','nill,advise','Rose,et') 高手指教啊
我也不是很肯定可以,没有环境来实验!
select * from userlist where userid||','||userDepartment in ('mike,tech','nill,advise','Rose,et')
select 1 from (
select 'mike' col1, 'tech' col2 from dual
union
select 'nill' col1, 'tech' col2 from dual
union
select 'rose' col1, 'tech' col2 from dual)
) t2
where t1.userid=t2.col1 and t1.userDepartment=t2.col2
)col1, col2 自己配置
in, not in 都可以用exists, not exists来代替
where (userid='mike' and userdpeartment='tech')
or (userid='nill' and userdepartment='advise')
or (userid='rose' and userdepartment='et')
晕哦~`我想到了却看到你已经写了~`,55
zzwind5,你的解决办法太过简陋了吧,不过还是多谢。
leborety(那只螃蟹) ,你的第二个办法看上去很美,不过不行。
zxjnew(重新启动),你的办法也不太好。
关于效率各位有什么讨论呢??