zoukankan      html  css  js  c++  java
  • sql查询时,根据特定的条件给表的某一个字段赋值

       先讲一下需要这个需求的情景:

       这是一个招聘求职项目遇到的一个问题。个人A向公司B的职位投递简历后,公司B会收到个人A的简历;但是A投递后把简历删除,公司收到的简历信箱

    还有这个简历,但却不能看了。

     

      原因:B收到的简历放在表[ResumeRecord]里,当B想看A的简历时会去表[Resume]查询(A已经把自己的简历删了,所以找不到了)

     

      针对这一情况,我想到了两种方法:

      1.A删除自己的简历时,同时把自己的投递记录删除;

      2.完善B收收到的简历信箱列表。当A把自己的简历删除后,B只能看这条记录,不能看A的详细信息。在这条记录旁给出【此简历已被该用户删除】的注释;

      

         接下来分析一下这两种方法,方法一虽然能解决程序的异常问题,但是对于B是不公平了。(A删除之前是可以看的,删除后怎么就没有了呢?会不会很怪。)

       所以果断采取方法二。实现方法二有两种方式,一是在查询记录的时候,对每一条记录查询一次,查看这条记录的简历是否存在(效率慢了),二是写成一个sql

       查询。

    select top 15 * from 
    (
      select 
      'Note'= case when b.ID IS NULL then '此简历已被该用户删除' else '' end, 
      a.ID, a.[Type], a.UserId, a.SubjectId, a.AreaId, a.CompanyId, a.ResumeId, a.SpendType, a.UpdateTime, 
      a.CreatTime, a.Remark, a.AreaPid, a.SubjectPid, a.IsEmailPost, row_number() over (order by a.ID Desc) as r 
      from [ResumeRecord] a 
      left join [Resume] b 
      on a.ResumeId = b.ID
      where ( type= 2 or type= 1 ) and CompanyId=158732
    )  t 
    where t.r>0 order by t.ID Desc

      这个sql可以查出想要的结果,但是当时用的是封装好的实体(这里就不细说了),所以到控制器里却无法取出自定义字段[Note]的值。

    于是就想到把对得出的值赋到表[ResumeRecord]的Remark字段,前提是当时的情景没有用到[Remark]这个字段。所以使用其他闲的

    字段也可以,字段类型最好与得出的值类型一样,这才是本篇的重点。 

    select top 15 * from 
    (
    select 
    (
        case when b.ID IS NULL then '此简历已被该用户删除' else '' end) as Remark, 
        a.ID, a.[Type], a.UserId, a.SubjectId, a.AreaId, a.CompanyId, a.ResumeId, a.SpendType, a.UpdateTime, 
        a.CreatTime, a.AreaPid, a.SubjectPid, a.IsEmailPost, row_number() over (order by a.ID Desc) as r 
        from [ResumeRecord] a 
        left join [Resume] b 
        on a.ResumeId = b.ID
        where ( type= 2 or type= 1 ) and CompanyId=158732
    )  t 
    where t.r>0 order by t.ID Desc

      最终搞定。

  • 相关阅读:
    [恢]hdu 1406
    [恢]hdu 1870
    [恢]hdu 1877
    [恢]hdu 1018
    [转载]Delphi 的编译指令(2): 条件语句的更多用法
    关于 class helper for ... 语法
    [转载]Delphi 的编译指令(1): $DEFINE、$UNDEF、$IFDEF等
    [转载]Delphi 的编译指令(3): 常用的预定义条件标识符
    Delphi2009之TStringBuilder类[3]:Replace
    Delphi2009之TStringBuilder类[1]:Create
  • 原文地址:https://www.cnblogs.com/paulhe/p/3824283.html
Copyright © 2011-2022 走看看