按该字段选择时的MySql Update字段

时间:2015-12-15 08:45:47

标签: mysql

我想更新一个字段,但我只能通过从该字段中选择来识别要更新的行,例如:

UPDATE alumni_feedback_questions
SET question_text = 'Basic Skills / Foundation Learning'
WHERE question_text =  'Basic Skills and Foundation Learning'

我确信这在SQL服务器中有效,但似乎在MySql中不起作用。

我很确定问题是因为我正在对正在改变的值进行选择,我可以看出为什么这会有问题。我原以为设计师会想到这种情况并让它先做选择,因此在更改之前要确定要更改的字段。

我也尝试过:

 UPDATE alumni_feedback_questions
SET question_text = 'Basic Skills / Foundation Learning'
WHERE ID =  (
                SELECT ID
                FROM alumni_feedback_questions
                WHERE question_text =  'Basic Skills and Foundation Learning'
            )

但这也行不通。

可以这样做 - 我不想选择eh ID并手动插入它们 - 必须有更好的方法吗?

我已经看到有关将同一个表加入select的事情了吗?

更新 - 我从这个UPDATE语句获得的错误消息是:

You can't specify target table 'alumni_feedback_questions' for update in FROM clause    0.016 sec

1 个答案:

答案 0 :(得分:0)

你的第一个建议是正确的。这是根据列的当前值更新列的有效SQL:

UPDATE alumni_feedback_questions
SET question_text = 'Basic Skills / Foundation Learning'
WHERE question_text =  'Basic Skills and Foundation Learning'

要检查它实际选择的内容,从而能够更新,请执行选择:

SELECT question_text
WHERE question_text =  'Basic Skills and Foundation Learning'

如果您得到的结果为零,那么您的文字就不存在了。