根据多个条件查询数据库,并根据符合条件的多少显示。(如有全部满足的直接显示在第一条,如没有就显示满足条件最多的依次根据满足条件从多到少显示)
比如数据库中有姓名,学校,班级,年龄,籍贯。根据这五个条件进行数据库筛选。如全部满足就显示在第一条。如没有全部满足的就看有没有满足其中4条的,没有就看有没有满足3条的以此类推,这样SQL该怎么实现?

解决方案 »

  1.   

    select tt.*,decode(姓名,'XX',1,0)+decode(学校,'XX',1,0)+decode(年龄,XX,1,0)+decode(籍贯,'XX',1,0)flag
    from tt
    order by flag
      

  2.   

    select tt.*,decode(姓名,'XX',1,0)+decode(学校,'XX',1,0)+decode(年龄,XX,1,0)+decode(籍贯,'XX',1,0)flag 
    from tt 
    order by flag desc
      

  3.   

    根据多个条件查询数据库,并根据符合条件的多少显示。(如有全部满足的直接显示在第一条,如没有就显示满足条件最多的依次根据满足条件从多到少显示) 
    比如数据库中有姓名,学校,班级,年龄,籍贯。根据这五个条件进行数据库筛选。如全部满足就显示在第一条。如没有全部满足的就看有没有满足其中4条的,没有就看有没有满足3条的以此类推,这样SQL该怎么实现? WHERE (姓名='xxxx' AND 学校='xxxx' AND 班级='xxxx' AND 年龄=xx AND 籍贯='xx')
       OR (姓名='xxxx' AND 学校='xxxx' AND 班级='xxxx' AND 年龄=xx )
       OR (姓名='xxxx' AND 班级='xxxx' AND 年龄=xx AND 籍贯='xx' )
       OR (姓名='xxxx' AND 学校='xxxx' AND 年龄=xx AND 籍贯='xx' )
       OR (呵呵:自己慢慢写吧:排列组合法!。