我有这个 MySQL 更新语句。它工作正常。

UPDATE Table1
SET Table1_field1='field1_content', Table1_field2='field2_content'
where Table1_field3=2

以上所有字段都属于同一个表。然后我在 WHERE 子句中添加了一个额外的条件 AND Table2.fieldname='XXX'
UPDATE Table1
SET Table1_fieldname1='field1_content', Table1_fieldname2='field2_content'
where Table1_fieldname3=2 AND Table2.fieldname='XXX'

这一次,SQL 语句失败了。错误是“where 子句中的未知列 Table2.fieldname”。但是,Table2.fieldname 确实存在。

最佳答案

为了能够在查询中使用 Table2 中的字段,您需要在 Table1 和 Table2 之间使用 JOIN。

根据提供的条件,JOIN 有效地将每个表中的一行合并为查询的单行。
例如,如果 Table1 和 Table2 都有一个列 tableID,我们可以组合 tableID 匹配的每个表中的行。
查询将如下所示:

UPDATE Table1
JOIN Table2
    ON Table1.tableID = Table2.tableID
SET Table1_fieldname1='field1_content', Table1_fieldname2='field2_content'
WHERE Table1_fieldname3=2 AND Table2.fieldname='XXX';

JOIN 关键字等效于 INNER JOIN。有不同类型的 JOIN 可用,我建议阅读有关它们的信息。
这是一个引用图像,可让您了解不同类型:在 WHERE 添加额外条件后的 MySQL Update 语句-LMLPHP

关于在 WHERE 添加额外条件后的 MySQL Update 语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38199528/

10-15 18:14