首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要更新包含多个值的字段的一个值。我已经尝试过Top 1、Min、Max,但无法正常工作

我需要更新包含多个值的字段的一个值。我已经尝试过Top 1、Min、Max,但无法正常工作
EN

Stack Overflow用户
提问于 2019-02-05 05:46:27
回答 1查看 38关注 0票数 0

我正在尝试将每个公司的多个联系人值中的一个更新为默认值。我不关心哪个联系人,但只能有一个默认值。

以下是布局的一个示例

代码语言:javascript
复制
Table: companyemail
Company field: cmp_id 6-8 digit varchar
Contact field: contact_name 50 digit varchar
Default Contact: ce_defaultcontact possible boolean values is Y or N

我有这些数据

代码语言:javascript
复制
Company: ABCDEF
Contact: John Doe  Default: N
         Jane Doe  Default: N
         John Smith Default: N

我正在尝试更新sql中的表,以仅将1个联系人设置为默认值。我尝试过以下几种方法

1.

代码语言:javascript
复制
update companyemail
   set ce_defaultcontact = 'Y'
   where contact_name = (
   Select Top 1 contact_name 
          From companyemail
          Where ce_defaultcontact = 'N'
          Order by contact_name DESC )

 FAIL (Only set 1 contact to Y)

代码语言:javascript
复制
update companyemail
   set ce_defaultcontact = 'Y'
   where contact_name = (
   Select Max(companyemail.contact_name) from companyemail)

失败(错误)

EN

回答 1

Stack Overflow用户

发布于 2019-02-05 05:48:30

使用可更新的CTE和row_number()

代码语言:javascript
复制
with toupdate as (
      select ce.*, row_number() over (partition by cmp_id order by newid()) as seqnum
      from companyemail ce
     )
update toupdate
   set ce_defaultcontact = 'Y'
    where seqnum = 1;

我猜是cmp_id识别了这些公司。如果这不是正确的字段,那么在partition by中使用正确的字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54524784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档