昨天的面试问题我尝试了很多我没有得到它可以任何人帮我这个需要更新表1基于table2 [关闭]

问题描述 投票:-3回答:4

表格1

 medicineid    bmi

 1             null  
 2              null     
 3              null          
 4              null         
 5              null   

表2

 medicineid    bmi

 3              null              
 5              null 

---- ---- OUTPUT

 medicineid    bmi 



 1              null  
 2              null     
 3              no         
 4              null         
 5              no 
sql sql-server
4个回答
1
投票

您可以在这些表上进行内部联接以及更新,如下所示,我假设如果记录存在于table2中,那么我们希望将table1 bmi更新为“no”

Update t1
set bmi = 'no'
from Table1 t1
inner join Table2 t2 on t1.medicineid = t2.medicineid 

1
投票

不清楚你在问什么,你想改变table1的内容吗? 一个简单的更新语句就可以做到

update table1
set    bmi = 'no'
where  medicineid in (select medicineid from table2)

0
投票
CREATE TABLE ##Table1  (medicineid INT, bmi VARCHAR(50)) 
CREATE TABLE ##Table2  (medicineid INT, bmi VARCHAR(50))  
INSERT INTO ##Table1 VALUES
(1, null),(2, null),(3, null),(4, null),(5, null)
INSERT INTO ##Table2 VALUES
(3, null),(5, null);


UPDATE  ##Table1
SET ##Table1.bmi = 'no'
FROM ##Table1 SI
INNER JOIN ##Table2 RAN
ON   SI.medicineid = RAN.medicineid;
----------------------------------------------

-- Answer
SELECT
A.medicineid,
A.bmi
FROM ##Table1 A
LEFT JOIN ##Table2 B
ON A.medicineid=B.medicineid

0
投票

我会用EXISTSUPDATE声明:

UPDATE t1
    SET t1.bmi = 'no'
FROM Table1 t1
WHERE EXISTS (SELECT 1 FROM Table2 t2 WHERE t2.medicineid = t.medicineid);
© www.soinside.com 2019 - 2024. All rights reserved.