我有这个MySQL Update语句。它工作正常。
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
确实存在。
答案 0 :(得分:2)
为了能够在查询中使用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可用,我建议阅读它们。 这是一个参考图片,可以让您了解不同的类型:
答案 1 :(得分:1)
你需要加入表1和表2;然后你可以更新
UPDATE Table1 AS b
INNER JOIN Table2 AS g ON b.id = g.id SET Table1_fieldname1='field1_content', Table1_fieldname2='field2_content'
where Table1_fieldname3=2 AND g.fieldname='XXX'