【问题标题】:inserting yes or no values based on fields in different tables being equal根据不同表中的字段相等插入是或否值
【发布时间】:2012-07-20 01:49:22
【问题描述】:

我创建了一个名为 LeadInventor 的字段,

如果第一个发明者表中的名称与发明者表匹配,我希望 SQL Server 做的是在 LeadInventor 字段中插入“是”。第一个发明者表将名称作为一个字段,发明者表将它们分开第一和最后

这是我目前的编码,我知道这是错误的。

if inventor.InventorFirst + ' ' +inventor.InventorLast  = firstinventor.firstinventorname
insert into Inventor(LeadInventor) values ('Yes')
else insert into Inventor(leadinventor) values ('No');

我想知道如何修复它,或者重写它以便它按照我的要求去做?

【问题讨论】:

    标签: sql sql-server sql-server-2008 insert


    【解决方案1】:

    这样的?

    UPDATE i
    SET LeadInventor = 
        CASE 
            WHEN fi.FirstInventorName IS NULL THEN 'No' 
            ELSE 'Yes' 
        END
    FROM Inventor i
        LEFT JOIN FirstInventor fi
        ON i.InventorFirst + ' ' + i.InventorLast = fi.FirstInventorName
    

    【讨论】:

      【解决方案2】:

      我认为使用 case 进行内部连接可以,因为您正在匹配字符串

      更新库存
      SET LeadInventor =
      案子 当 fi.FirstInventorName 为 NULL THEN 'No' WHEN fi.FirstInventorName ='' THEN 'No' - 假设您想要 NO 即使是空白名字,如果不删除此行
      其他“是”
      结尾 FROM Inventor inv
      INNER JOIN FirstInventor firstinv ON firstinv.FirstInventorName = inv.InventorFirst + ' ' + inv.InventorLast

      【讨论】:

      • 这会起作用,但我确实需要两个字段都是空白的,现在只是其中一个名称。有时存储这些数据的方式根本没有意义,我可以有一个没有名字的记录,但就像姓氏框中的 3 个单独的名字一样。我认为任何进行任何形式的数据输入的人都应该至少了解 DB 的原理以及字段的工作原理,
      • 是的,表单 UI 应该有严格的验证,因为没有名字注册和其他数据没有任何意义。
      • 很遗憾这个数据不是来自表单,而是来自xml文件...我相信主程序是用python写提取平台的人只是想把数据拿出来,没有做它是有意义的,并且它更容易在 SQL 中修复它,然后我将学习 python
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多