Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于不同表中的字段相等而插入是或否值_Sql_Sql Server_Sql Server 2008_Insert - Fatal编程技术网

Sql 基于不同表中的字段相等而插入是或否值

Sql 基于不同表中的字段相等而插入是或否值,sql,sql-server,sql-server-2008,insert,Sql,Sql Server,Sql Server 2008,Insert,我创建了一个名为LeadInventor的字段 如果第一个inventor表中的名称与inventor表匹配,我希望SQL Server在LeadInventor字段中插入yes。第一个inventor表将名称作为一个字段,inventor表将名称前后分开 这是我到目前为止的编码,我知道这是错误的 if inventor.InventorFirst + ' ' +inventor.InventorLast = firstinventor.firstinventorname insert int

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

如果第一个inventor表中的名称与inventor表匹配,我希望SQL Server在LeadInventor字段中插入yes。第一个inventor表将名称作为一个字段,inventor表将名称前后分开

这是我到目前为止的编码,我知道这是错误的

if inventor.InventorFirst + ' ' +inventor.InventorLast  = firstinventor.firstinventorname
insert into Inventor(LeadInventor) values ('Yes')
else insert into Inventor(leadinventor) values ('No');
我想知道的是如何修复它,或者重新编写它,以便它按照我的要求执行?

类似这样的内容

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
像这样的

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

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

更新库存
设置LeadInventor=
案例 当fi.FirstInventorName为NULL时,则为“否” 当fi.FirstInventorName=''时,则为“否”-假设您希望blankfirst name为“否”,如果不是,则删除此行
否则“是”
结束 来自Inventor inv
内部联接FirstInventor firstinv
在firstinv.FirstInventorName=inv.InventorFirst+''+inv.InventorLast

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

更新库存
设置LeadInventor=
案例 当fi.FirstInventorName为NULL时,则为“否” 当fi.FirstInventorName=''时,则为“否”-假设您希望blankfirst name为“否”,如果不是,则删除此行
否则“是”
结束 来自Inventor inv
内部联接FirstInventor firstinv
在firstinv.FirstInventorName=inv.InventorFirst+''+inv.InventorLast

上,这将起作用,但我确实需要两个字段现在都为空,只有一个名称。有些时候,这些数据的存储方式根本没有意义,我可以有一个没有名字的记录,但在姓氏框中有3个不同的名字。我认为任何进行任何形式的数据输入的人都应该至少理解DB的原理和字段的工作原理,是的,表单UI应该有严格的验证,因为没有名字注册和其他数据是没有任何意义的。不幸的是,这些数据不是来自表单,而是来自xml文件。。。我相信主程序是那个用python编写提取平台的家伙,他只是想把数据拿出来,而不是用有意义的方式,用SQL来修复它更容易,然后我就可以学习python了,这很管用,但我现在确实需要两个字段都为空,只有一个名称。有些时候,这些数据的存储方式根本没有意义,我可以有一个没有名字的记录,但在姓氏框中有3个不同的名字。我认为任何进行任何形式的数据输入的人都应该至少理解DB的原理和字段的工作原理,是的,表单UI应该有严格的验证,因为没有名字注册和其他数据是没有任何意义的。不幸的是,这些数据不是来自表单,而是来自xml文件。。。我相信主程序是用python编写抽取平台的人,他只是想把数据拿出来,而不是用有意义的方式来做,而且用SQL来修复它更容易,那么我就可以学习python了