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

   这是一个招聘求职项目遇到的一个问题。个人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

  最终搞定。

sql查询时,根据特定的条件给表的某一个字段赋值的更多相关文章

  1. oracle中使用sql查询时字段为空则赋值默认

    转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  2. 在数据表中添加一个字段的SQL语句怎么写

    如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识.   通用式: alter table [表名] add [字段名] 字 ...

  3. sql查询调优之where条件排序字段以及limit使用索引的奥秘

       奇怪的慢sql 我们先来看2条sql 第一条: select * from acct_trans_log WHERE  acct_id = 1000000000009000757 order b ...

  4. sql查询时增加自动编号和分页

    查询时加序号 a:没有主键的情形: ,) as iid,* into #tmp from TableName Select * from #tmp Drop table #tmp b:有主键的情形: ...

  5. SQL查询时踩得一些坑

    1.左右连接: left join:LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替. inner join: 内连接是最 ...

  6. SQL查询时,根据日期范围查询周

    周数据会有weekbegin和weekend两个字段,用来描述周的开始日期和结束日期. 现在项目中的日历控件不支持周查询,只支持日期查询,所以目前面临的问题是,根据时间范围,查询周. 最终sql如下: ...

  7. sql查询结果集根据指定条件排序的方法

    oracle认为 null 最大. 升序排列,默认情况下,null值排后面. 降序排序,默认情况下,null值排前面. 有几种办法改变这种情况: (1)用 nvl 函数或decode 函数 将null ...

  8. mysql 怎么通过sql语句批量去掉某一个表中某一个字段的多余字符

    采用替换,把”<img src="“替换为空格," width="300" height="300" />也替换为空格,曾经在网 ...

  9. mysql通过sql语句如何批量去掉某一个表中某一个字段的下面的相同部分字符串

    今天用Excel导入的数据中,前面包含` 批量去除 UPDATE  sheet2 set total=replace(total,'`','');

随机推荐

  1. php代码审计5审计命令执行漏洞

    命令执行漏洞:通过易受攻击的应用程序在主机操作系统上执行任意命令,用户提供的数据(表单,cookie,http头等)未过滤 挖掘思路:用户能够控制函数输入,存在可执行代码的危险函数 命令执行和代码执行 ...

  2. Nginx 进行性能配置

    总所周知,网络上我们购买的服务器的性能各不相同,如果采用 Nginx 的默认配置的话,无法将服务器的全部性能优势发挥出来,我们应该选择适合自己需求的配置. 当我们默认安装后 Nginx 后,我们便得到 ...

  3. loj #6226. 「网络流 24 题」骑士共存问题

    #6226. 「网络流 24 题」骑士共存问题   题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上 ...

  4. redis源码分析(3)sds

    sds是redis中用来处理字符串的数据结构.sds的定义在sds.h中: typedef char *sds; 简洁明了!简明扼要!(X,玩我呢是吧!这特么不就是c中的字符串么?!).像redis这 ...

  5. VS2013安装及破解教程

    https://blog.csdn.net/qq_33742119/article/details/80075352 软件下载的百度云链接,也可以在官网直接下载 链接:https://pan.baid ...

  6. 3-19bug随即

    #方案录入 ### 国外网络访问,录入添加图片,上传后图片显示不出. ``` * 后台有返回数据,前端显示巨慢,待检查 * ``` ### 产品信息,富文本信息加载不出

  7. Qt 学习之路 2(37):文本文件读写

    Qt 学习之路 2(37):文本文件读写 豆子 2013年1月7日 Qt 学习之路 2 23条评论 上一章我们介绍了有关二进制文件的读写.二进制文件比较小巧,却不是人可读的格式.而文本文件是一种人可读 ...

  8. FPGA基础学习(3) -- 跨时钟域处理方法

    文章主要是基于学习后的总结. 1. 时钟域 假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域.假如设计有两个输入时钟,如图1所示,一个时钟给接口1使 ...

  9. 【语义分割】large kernel matters中GCN模块的pytorch实现

    GCN模块的实现比较简单,在giuhub上看到两种实现,轻微不同 实现一:https://github.com/ycszen/pytorch-segmentation/blob/master/gcn. ...

  10. flask-login

    创建扩展对象实例 from flask_login import LoginManager login_manager = LoginManager() login_manager.login_vie ...