为什么这个SQL更新整个表

时间:2013-05-05 03:49:33

标签: sql postgresql

我遇到了经典的初学者错误。好像我做了一个没有WHERE子句的UPDATE。

这是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 = ?";

尽管WHERE t.id =? SQL仍然更新整个表。

......你能看到问题吗?

2 个答案:

答案 0 :(得分:2)

试试这个,

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 = ?

请在执行上述语句之前先备份您的数据库

答案 1 :(得分:0)

使用select语句运行查询。 您将看到它将返回所有值。

在第一次加入时使用左连接,它应该可以解决您的问题。