我想更新一个字段,但我只能通过从该字段中选择来识别要更新的行,例如:
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
答案 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'
如果您得到的结果为零,那么您的文字就不存在了。