Mysql 基于两个表中一列的两个匹配值更新一列
我有两个问题,如果有人能帮助我,这将是一个伟大的学习Mysql 基于两个表中一列的两个匹配值更新一列,mysql,sql,sql-server,sqlanywhere,Mysql,Sql,Sql Server,Sqlanywhere,我有两个问题,如果有人能帮助我,这将是一个伟大的学习 我有两个表,我的要求是更新 表1值仅适用于列B所针对的行 值与表2的B列相同 我正在寻找一个优化的SQL查询 UPDATE DBA.COM, DBA.MEN SET DBA.COM.ND_MAN='' WHERE DBA.MEN 在此之后,我无法在where条件中选择列名 我在两个表的B列中发现的问题是 从UI中标识的唯一(GUID)。所以,当我复制单元格值时 在“SQLAnywhere”交互式SQL编辑器中,它显示列 值复制如下: 0x9
表1
值仅适用于列B
所针对的行
值与表2的B列
相同
我正在寻找一个优化的SQL查询
UPDATE DBA.COM, DBA.MEN
SET DBA.COM.ND_MAN=''
WHERE DBA.MEN
在此之后,我无法在where条件中选择列名
B列中发现的问题是
从UI中标识的唯一(GUID)。所以,当我复制单元格值时
在“SQLAnywhere”交互式SQL编辑器中,它显示列
值复制如下:
0x99e2f2a23f9946acb0ceb374a627b142
而不是作为99e2f2a23f9946acb0ceb374a627b142
但是,当我复制表的列值时,它正在启动
使用0x
。我想这不会带来任何问题吧
或者如何在您将为问题1创建的上述查询中更正它?您需要根据需要加入并更新某些内容
update table1 t1
join table2 t2 on t1.B = t2.B
set t1.A = 'some value'
你需要加入并更新一些东西
update table1 t1
join table2 t2 on t1.B = t2.B
set t1.A = 'some value'
回答你的第一个问题
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.
回答你的第一个问题
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.
非常感谢,但是,“.”即t1.B没有获取表的列名:(这是SQL Anywhere。请帮助。很抱歉,它没有按照我说的那样工作。因为,我无法首先提供别名,而且它也没有在我的编辑器上获取列。这不是intellisense问题,也不是intellisense问题,因为其他查询可以与intellisense正常工作。您可以将查询添加到您正在尝试的问题中吗?更新了吗?请看,嗯,再试一次没有别名,即直接作为
JOIN table1.B=table2.B set table1.A='some val'
非常感谢,但是,“.”即t1.B没有获取表的列名:(这是SQL Anywhere。请帮助。很抱歉,它没有按照我说的那样工作。因为,我无法首先提供别名,而且它也没有在我的编辑器上获取列。这不是intellisense问题,也不是intellisense问题,因为其他查询可以与intellisense正常工作。您可以将查询添加到您正在尝试的问题中吗?更新了吗?请看,嗯,再试一次没有别名,即直接作为JOIN table1.B=table2.B set table1.A='some val'
为什么要更新t2?查询不会更新t2表。更新关键字后看到的表是更新查询中包含的表。只有set子句后指定的表才会更新。有关详细信息,您可以阅读我的注释。Deepak,谢谢,但是,很遗憾,我没有通过放置点来获取列名。即t1。不获取ID。我在任何地方使用SQL。请告知为什么t2要更新?查询不会更新表t2。更新关键字后看到的表是更新查询中包含的表。只有SET子句后指定的表是更新的d、 您可以阅读我的笔记以了解更多信息。Deepak,谢谢,但是,很遗憾,我没有通过放置点来获取列名。即t1。不获取ID。我在任何地方使用SQL。请提供建议