当按该字段选择时,MySql更新字段
我想更新一个字段,但我只能通过从该字段中选择来标识要更新的行,例如:当按该字段选择时,MySql更新字段,mysql,Mysql,我想更新一个字段,但我只能通过从该字段中选择来标识要更新的行,例如: UPDATE alumni_feedback_questions SET question_text = 'Basic Skills / Foundation Learning' WHERE question_text = 'Basic Skills and Foundation Learning' 我确信这在SQL server中可以工作,但在MySql中似乎不起作用 我很确定问题是因为我正在对正在变化的值进行选择,我可
UPDATE alumni_feedback_questions
SET question_text = 'Basic Skills / Foundation Learning'
WHERE question_text = 'Basic Skills and Foundation Learning'
我确信这在SQL server中可以工作,但在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
你的第一个建议是正确的。这是根据列的当前值更新列的有效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'
如果结果为零,则文本不存在。MySQL中也存在文本。我是否误解了错误消息?我已经更新了问题,将第二个示例中的错误包括在内?因为第一个不应该出错。您是否运行了“选择”以检查结果?谢谢您,这是正确的-安全模式已打开,这就是阻止更新的原因。如果你的答案中包含安全模式,我将投票