在WHERE

时间:2016-07-05 09:15:04

标签: mysql sql

我有这个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确实存在。

2 个答案:

答案 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可用,我建议阅读它们。 这是一个参考图片,可以让您了解不同的类型:enter image description here

答案 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'