【问题标题】:Column Value Based On Value in Another Table基于另一个表中的值的列值
【发布时间】:2018-12-25 21:44:57
【问题描述】:

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

Table_1 包含三列:名字、姓氏和年龄。

Table_2 也有三列:名字、姓氏和年龄。

表之间的唯一区别是 Table_2 中的 Age 列不包含任何数据。我要做的是在 Table_2 的 Age 列中进行搜索/查询,它将在 Table_1 中搜索 First Name 值,如果在 Table_1 中找到该名称,则在表 2 的 Age 列中显示该值。

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)        

这是通过计算列以某种方式完成的吗?

【问题讨论】:

  • 你使用哪个 dbms

标签: sql


【解决方案1】:

你可以加入这两个表:

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

【讨论】:

  • 那只会加入查询,对吗?我想要的是将该值永久保留在 Table_2 中,以便数据始终存在(如果这有意义?)。更清楚地说,我需要的是该列始终保持搜索功能,以便当新数据上传到表中时,它会自动搜索 Table_1 中的相关值...
  • @AdsMont 为什么需要将它保留在 table2 中?在需要时不查询什么(或为简单起见使用视图)?
  • 我需要将其持久化,因为返回的值用于另一列中的计算,因此该值必须始终存在。
【解决方案2】:

如果你使用 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 ;

【讨论】:

    【解决方案3】:

    如果您希望该值永久保留在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2021-12-02
      相关资源
      最近更新 更多