0

我在我的 PHP 脚本中使用 where 子句,SQL 文档没有说明我可以使用 where 子句。(我想在看到语法后我不能)

我的问题是我有一个存储用户注册的用户表,现在我计划存储另一个关于用户的信息,即他们订阅了哪种类型的包。所以我在中添加了另一列subscribedusers table但我意识到这可能是添加另一列可能会干扰我以前用 PHP 编写的插入、选择查询。所以我创建了另一个表,在这里将用户 ID 设为外键。package_id 作为 PK,pack_detail 作为关于包的详细信息。现在我想存储特定用户的包详细信息,我希望如果用户以前存在他的行应该更新,我该如何通过替换来做到这一点?

4

1 回答 1

0

REPLACE 通过匹配主键来工作。如果您在 REPLACE 中指定主键值并且不存在具有该值的行,则它的工作方式类似于 INSERT。如果您尝试插入的主键值已存在于表中,则会覆盖该行的其他列。

所以不需要 WHERE 子句。它隐含地寻找WHERE pk = value.

如果您希望它检测给定用户的包详细信息并且要使用 REPLACE,则必须将 userid 设为主键。

CREATE TABLE userpackages (
  userid INT PRIMARY KEY,
  package_detail TEXT,
  FOREIGN KEY (userid) REFERENCES users(userid)
);

首先我们添加用户的第一个包:

REPLACE INTO userpackages (userid, package_detail) 
VALUES (1234, 'some package');

接下来我们为用户 1234 更改包:

REPLACE INTO userpackages (userid, package_detail) 
VALUES (1234, 'some other package');

如果 userid 不是您的主键,那么 REPLACE 将不起作用。

于 2013-07-28T16:51:03.160 回答