mySQL:我应该把我的WHERE放在哪里?

时间:2018-05-28 13:21:13

标签: mysql

我正在尝试添加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;

2 个答案:

答案 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的模糊列引用的错误之一。现在,我们在使用该列时会明确指出哪个表。