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

   这是一个招聘求职项目遇到的一个问题。个人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. 【10.2.3】ArcGIS Runtime for Android搭建开发环境过程中问题具体解释

    一.Visual Studio Ultimate2012安装过程问题 1.问题描写叙述 安装完毕后,您将看到一条消息,指示安装程序已完毕.但并非全部的功能具有已正确安装.以及下面警告消息: Micro ...

  2. linux系统安全及应用——弱口令检测

    Joth the Ripper,简称JR,一款密码分析工具,支持字典式的暴力破解,通过对shadow文件的口令分析,可以检测密码强度,官方网站http://www.openwall.com/john/ ...

  3. c语言数据结构学习心得——查找

    顺序查找(线性查找) 主要用于在线性表中的查找 int Search1(int a[],int n,int key){ ;i<=n;i++){ //注意从1开始 if(a[i]==key)ret ...

  4. upsource代码审查

    upsource 从零搭建代码审查平台,需要的不仅是把代码审查的工具搭起来,还要结合公司情况制定一系列的代码审查规范.下面是对选择的upsource web端代码审查工具的安装及介绍.详细的请看这篇文 ...

  5. 使用过多的递归出现错误,“System.StackOverflowException”类型的未经处理的异常在 mscorlib.dll 中发生

    class Program { static void Main(string[] args) { sub(0); }     private static void sub(int count) { ...

  6. SQL SERVER下有序GUID和无序GUID作为主键&聚集索引的性能表现

     背景 前段时间学习<Microsoft SQL Server 2008技术内幕:T-SQL查询>时,看到里面关于无序GUID作为主键与聚集索引的建议,无序GUID作为主键以及作为聚集索引 ...

  7. Android 绑定Service并与之通信

    1.绑定service 2.实现方法 3.在Androidmanifest.xml文件中配置service <service android:name=".Myservice" ...

  8. 013 Android ActionFloatingButton悬浮按钮组件与Snackbar组件使用

    1.导入ActionFloatingButton组件(点击下载按钮,安装组件) 2,.ImageView图片XML设置 <ImageView android:id="@+id/imag ...

  9. 老男孩python作业4-ATM程序开发

    实现一个ATM + 购物商城程序: 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还款 ...

  10. Codeforces Round #549 (Div. 2) Solution

    传送门 A.The Doors 看懂题目就会写的题 给一个 $01$ 序列,找到最早的位置使得 $0$ 或 $1$ 已经全部出现 #include<iostream> #include&l ...