我正在尝试添加WHERE子句 我应该如何管理?
这是我的查询:
UPDATE usr_time_reg
JOIN users ON usr_time_nr = usr_time_reg.usr_time_nr
SET usr_time_reg.usr_employment = users.employment;
我正在尝试添加:WHERE usr_time_reg.usr_emplyoment = "Övrigt"
我试过了:
UPDATE usr_time_reg
JOIN users ON usr_time_nr = usr_time_reg.usr_time_nr,
usr_time_reg.usr_employment = "Övrigt"
SET usr_time_reg.usr_employment = users.employment;
UPDATE usr_time_reg
JOIN users ON usr_time_nr = usr_time_reg.usr_time_nr
SET usr_time_reg.usr_employment = users.employment
WHERE usr_time_reg.usr_employment = "Övrigt";
UPDATE usr_time_reg
JOIN users ON usr_time_nr = usr_time_reg.usr_time_nr
WHERE usr_time_reg.usr_employment = "Övrigt"
SET usr_time_reg.usr_employment = users.employment;
UPDATE usr_time_reg
JOIN users ON usr_time_nr = usr_time_reg.usr_time_nr
AND usr_time_reg.usr_emplyment = "Övrigt"
SET usr_time_reg.usr_employment = users.employment;
答案 0 :(得分:1)
请尝试以下内容,因为ON
UPDATE usr_time_reg
JOIN users ON users.usr_time_nr = usr_time_reg.usr_time_nr
SET usr_time_reg.usr_employment = users.employment
WHERE usr_time_reg.usr_employment = "Övrigt";
使用JOIN
UPDATE usr_time_reg as tr, users as ur
SET tr.usr_employment = ur.employment
WHERE ur.usr_time_nr = tr.usr_time_nr and tr.usr_employment = "Övrigt";
连接表时,在字段名称前添加表别名以避免ambiguous column
错误
答案 1 :(得分:1)
以下查询应该有效:
UPDATE usr_time_reg u1
INNER JOIN users u2
ON u1.usr_time_nr = u2.usr_time_nr
SET u1.usr_employment = u2.employment;
WHERE u1.usr_emplyment = 'Övrigt';
除了您可能正在使用的其他数据库之外,可能很难跟踪MySQL的更新连接语法。因此,如果您忘记了good reference,这总是一个好主意。
除了使用正确的语法之外,我所做的主要更改是将表别名引入更新查询。除了使其更容易阅读之外,它还解决了有关user_time_nr
的模糊列引用的错误之一。现在,我们在使用该列时会明确指出哪个表。