Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不带WHERE子句的更新查询_Sql_Database_Sql Update_Where Clause - Fatal编程技术网

Sql 不带WHERE子句的更新查询

Sql 不带WHERE子句的更新查询,sql,database,sql-update,where-clause,Sql,Database,Sql Update,Where Clause,我知道这听起来是个愚蠢的问题,但我想知道UPDATE查询是否可以在没有WHERE子句的情况下使用。如果是,在什么条件下 提前感谢。如果您不使用WHERE子句,表中的所有记录都将受到影响因此,我认为当您出于某种原因(例如更新用户注册状态)更新整个字段时,所有用户都可以免费使用 UPDATE users SET status = "free"; SQL中的UPDATE语句用于更新表中的记录。我们可以使用UPDATE语句修改表中的一条或多条记录(行)。如果在UPDATE语句中不使

我知道这听起来是个愚蠢的问题,但我想知道
UPDATE
查询是否可以在没有
WHERE
子句的情况下使用。如果是,在什么条件下


提前感谢。

如果您不使用
WHERE
子句,表中的所有记录都将受到影响

因此,我认为当您出于某种原因(例如更新用户注册状态)更新整个字段时,所有用户都可以免费使用

UPDATE users SET status = "free";

SQL中的
UPDATE
语句用于更新表中的记录。我们可以使用
UPDATE
语句修改表中的一条或多条记录(行)。如果在
UPDATE
语句中不使用
WHERE
子句,表中的所有记录都将被更新。

在oracle中,可以省略
WHERE
子句=>表中的所有行都将被更新。我不知道其他ORDBM的情况,但我认为这也会更新所有表行。是的,您可以,正如已经回答的那样。尽管如此,我对此持两种看法。我见过当一个
WHERE
子句被意外省略,并且每个记录(而不仅仅是一条)都被更新时,灾难就会发生。虽然我希望看到
UPDATE
而不将
WHERE
视为语法错误,但我也认为这不是编程语言的工作。我仍然感到困惑。如果我们总是必须为同一个表上的每个更新声明where子句,那么这不就是服务器的成本吗。为什么我们不能从上一个查询中识别行并将其用于下一个查询?如果这正是我想要的呢?是否需要添加
其中1=1
?@ChristoKiwi PostgreSQL在这种情况下抛出错误(
不安全的查询:'Update'语句不带'WHERE'一次更新所有表行
),并且不进行任何更改。似乎不允许在没有
WHERE
子句的情况下进行更新。然而,您的建议
WHERE 1=1
或任何其他琐碎的正确语句(例如
WHERE id>0
)似乎起到了关键作用。25年来,我一直在以多种方式使用SQL,这是我第一次看到此警告。我认为看到它很好,但我需要一个更好的方法来避免“1=1”的把戏……你可以使用primary\u key=primary\u key,而不是where 1=1。这样对我来说更具视觉意义。