基于另一个表中的值的列值

时间:2018-07-18 05:21:17

标签: sql

所以我的数据库中有两个表Table_1和Table2。

表_1包含三列:名,姓和年龄。

表_2还具有三列:名,姓和年龄。

表之间的唯一区别是表_2中的“年龄”列不包含任何数据。我想做的是将一个搜索/查询放入Table_2的Age列中,它将在Table_1中搜索First Name值,如果在Table_1中找到该名字,则在Table 2的Age列中显示该值。 / p>

Table_1

First Name  Last Name   Age

John        Smith       30        
David       Smith       30        
James       Smith       40        

Table_2

First Name  Last Name   Age

John        Smith       (Will return 30)       
David       Smith       (Will return 30)  
James       Smith       (Will return 40)        

通过对列进行计算以某种方式完成吗?

3 个答案:

答案 0 :(得分:2)

您可以加入两个表:

SELECT    table2.firstname, table2.lastname, table1.age
FROM      table2
LEFT JOIN table1 ON table1.firstname = table2.firstname AND 
                    table1.lastname  = table2.lastname

答案 1 :(得分:0)

如果您希望该值永久保留在table2中,则可以使用以下查询从表1中对其进行更新:(仅适用于MSSQL)

UPDATE t2
SET t2.age = t1.age
FROM table2 t2    
INNER JOIN table1 t1
ON t1.firstname = t2.firstname AND t1.lastname  = t2.lastname

答案 2 :(得分:0)

如果您使用mysql数据库,则更新查询应如下所示

    UPDATE table2 a 
    JOIN table1 b ON a.firstname = b.firstname 
    AND a.lastname = b.lastname         
    SET a.age = b.age

但是对于postgreSQL来说是

UPDATE table2 a
SET a.age = b.age
FROM table1 b
WHERE a.firstname = b.firstname 
        AND a.lastname = b.lastname ;