比如我又一张员工表,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') 高手指教啊

解决方案 »

  1.   

    select * from userlist where (userid,userDepartment) in (''mike','tech'',''nill','advise'',''Rose','et'') 试试这种呢
      

  2.   

    我来解决,把分给我.
    我也不是很肯定可以,没有环境来实验!
    select * from userlist where userid||','||userDepartment in ('mike,tech','nill,advise','Rose,et')
      

  3.   

    select * from userlist t1 where exists (
    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来代替
      

  4.   

    select * from userlist
    where (userid='mike' and userdpeartment='tech')
    or (userid='nill' and userdepartment='advise')
    or (userid='rose' and userdepartment='et')
      

  5.   

    select * from userlist where (userid,userDepartment) in (('mike,tech'),('nill,advise'),('Rose,et'))
      

  6.   

    sbaz(万神渡劫)  他这种可以
    晕哦~`我想到了却看到你已经写了~`,55
      

  7.   

    sbaz(万神渡劫) 方法可用员工表一般都不大,所以对性能影响忽略。
      

  8.   

    多谢各位,就按  sbaz(万神渡劫)的方法吧。只是,我的字段里有可能带空格,会不会出问题呢。比较之下还是不错地。
    zzwind5,你的解决办法太过简陋了吧,不过还是多谢。
    leborety(那只螃蟹) ,你的第二个办法看上去很美,不过不行。
    zxjnew(重新启动),你的办法也不太好。
    关于效率各位有什么讨论呢??