Mysql 如何使用从另一个表中选择的值更新表
我想用值ABCD更新accountinfo表中的字段标记,并在相同DB的不同表中使用类似选择的查询结果。 查询不会返回任何错误,但也不会返回更新Mysql 如何使用从另一个表中选择的值更新表,mysql,sql,database,Mysql,Sql,Database,我想用值ABCD更新accountinfo表中的字段标记,并在相同DB的不同表中使用类似选择的查询结果。 查询不会返回任何错误,但也不会返回更新 UPDATE accountinfo SET TAG= 'ABCD' WHERE 'ABCD%' IN (select NAME from hardware where NAME LIKE 'ABCD%'); 中的运算符是相等比较。在字符串文本中使用'%'使它看起来像是某种比较。。。匹配前四个字符 对于accountinfo表中的每一行,无论
UPDATE accountinfo
SET TAG= 'ABCD'
WHERE 'ABCD%' IN (select NAME from hardware where NAME LIKE 'ABCD%');
中的
运算符是相等比较。在字符串文本中使用'%'
使它看起来像是某种比较。。。匹配前四个字符
对于accountinfo
表中的每一行,无论accountinfo
中包含什么,查询的WHERE
子句中的谓词都将计算为TRUE或FALSE。您要么不更新任何行,要么更新所有行
您想更新accountinfo
中的哪些行
accountinfo
中的行是否与hardware
中的行“匹配”?你怎么知道这些行是否匹配
编辑:
硬件中没有与accountinfo匹配的行。
因此,我们必须继续了解的信息是:accountinfo
表中有一列名为TAG
。这是我们唯一知道的专栏
hardware
表中有一列名为NAME
。表中有一些行的名称值以'ABCD'
开头
同样,您想更新accountinfo
中的哪些行?如何确定要更新的行?我相信我发现了您的错误:
你必须写:
UPDATE accountinfo
SET TAG= 'ABCD'
WHERE TAG IN (select NAME from hardware where NAME LIKE 'ABCD%');
这将更新硬件名称中以开头的所有标记
abcd 帐户信息和硬件中是否有公共列?您想更新accountinfo
中的哪些行?(在accountinfo
中,我们看到的唯一一列是名为TAG
。我们看到hardware
表中有一列名为NAME
,其中一些值以'ABCD'
开头。您已经识别了hardware
表中的行。但我们不知道hardware中的行如何显示。)de>表与accountinfo
中的行相关。您需要将车备份到马的后面,并找出如何区分accountinfo
中的行:哪些行需要更新,哪些行不需要更新。硬件中没有与accountinfo匹配的行。我需要的是表a中的标记字段如果硬件中的名称字段以ABCD开头,则ccountinfo将以ABCD更新。名称以“ABCD”开头的所有行@Ebar:您已显示“所有(来自硬件表)名称以开头的行
”。您显示了一个四行的示例。但这些行(来自硬件表)与accountinfo
表中的行分开并有区别。您需要某种方法来标识要更新的accountinfo
中的行。(硬件表中的行没有告诉我们需要更新accountinfo
中的哪些行。)帐户信息中有一个与两个数据库匹配的ID行,该行与硬件ID匹配。我可以使用该行匹配它们吗?仍然没有受影响的行。如果没有名称以ABCDYes开头的硬件,则可以在我的问题中看到select查询的结果
UPDATE accountinfo
SET TAG= 'ABCD'
WHERE TAG IN (select NAME from hardware where NAME LIKE 'ABCD%');