根据两个表中列的两个匹配值更新列

时间:2014-05-29 06:49:26

标签: mysql sql sql-server sqlanywhere

我有两个问题,如果有人可以帮助我,那将是很好的,对我来说将是一个很好的学习。

  1. 我有两个表,我的要求是更新列A Table 1值仅适用于列B所拥有的行 值与B的列Table2相同。

    我在SQL中寻找一个优化的查询。

    UPDATE DBA.COM, DBA.MEN
    SET DBA.COM.ND_MAN=''
    WHERE DBA.MEN
    

    在此之后,我无法在where condition中选择列名。

  2. 我在两个表的B列中找到的问题是,它是 来自UI的唯一标识(GUID)。所以,当我复制单元格值时 从“SQL Anywhere”Interactive SQL编辑器中,它显示列 值复制如下:

    0x99e2f2a23f9946acb0ceb374a627b142
    

    而不是99e2f2a23f9946acb0ceb374a627b142

    但是,当我复制时,表的列值都是,它正在启动 与0x。那么我猜它不会造成任何问题吗?

  3. 或者如何在问题1中创建的上述查询中纠正它?

2 个答案:

答案 0 :(得分:3)

您需要加入并更新某些内容

update table1 t1
join table2 t2 on t1.B = t2.B
set t1.A = 'some value'

答案 1 :(得分:1)

回答你的第一个问题

UPDATE t1, t2 SET t1.name = new_value WHERE t1.id = t2.id;

注意:

A multiple-table UPDATE is an extension of a single-table statement:

Following the UPDATE keyword, name the tables involved in the operation, separated by
commas. (You must name all the tables used in the query, even if you aren’t updating all
of them.)

In the WHERE clause, describe the conditions that determine how to match records in the
tables.

In the SET clause, assign values to the columns to be updated. These assignments can
refer to columns from any of the joined tables.