为什么这个SQL要更新整个表
我被一个典型的初学者错误击中了。好像我做了一个没有WHERE子句的更新 下面是SQL:为什么这个SQL要更新整个表,sql,postgresql,Sql,Postgresql,我被一个典型的初学者错误击中了。好像我做了一个没有WHERE子句的更新 下面是SQL: "UPDATE teams SET description = ? " + "FROM teams t " + "JOIN team_memberships tm ON t.id = tm.team_id " + "JOIN users u ON tm.user_id = u.id " + "WHERE t.id = ? AND u.uid = ?"; 尽管t.id=?SQL仍然会更新整个表 。。。你能看
"UPDATE teams SET description = ? " +
"FROM teams t " +
"JOIN team_memberships tm ON t.id = tm.team_id " +
"JOIN users u ON tm.user_id = u.id " +
"WHERE t.id = ? AND u.uid = ?";
尽管t.id=?SQL仍然会更新整个表
。。。你能看到问题吗 使用select语句运行查询。 您将看到它将返回所有值 将左连接与第一个连接一起使用,应该可以解决您的问题。试试这个
UPDATE teams AS t
SET description = ?
FROM team_memberships tm
JOIN users u ON tm.user_id = u.id
WHERE t.id = tm.team_id AND
t.id = ? AND u.uid = ?
请在执行上述语句之前先备份数据库不,这不起作用,同样的问题您会收到什么错误消息?您正在设置什么参数?它会更新整个表。参数是正确的。“团队”(不是别名“t”!!)和其他团队之间没有关系。不管其他人怎么做,“团队”中的所有记录都必须更新。提示:不需要备份,只需打开一个事务,永远不要提交(在做了一些选择后将其回滚以检查更新所更改的内容)。哇,你让我大吃一惊。很酷。“请做备份”让我咯咯地笑了起来哦,这很有效。你真棒!我查看了这里的文档:发现它的语法与frm
MySQL
有些不同。