我在我的PHP脚本the SQL documentation doesnt states that either I can use where clause or not.中使用了where子句(我认为在看到语法后我不能)
我的问题是我有一个存储用户注册的用户表,
现在我计划存储另一个关于用户的信息,这些信息是他们订阅的包的类型。所以我在subscribed
中添加了另一列users table
,但我意识到可能会添加另一列可能打扰我在PHP中编写的先前,插入,选择查询。
所以我创建了另一个表,在这里将userid作为外键.package_id作为PK,pack_detail作为包的详细信息。
现在我想存储特定用户的包详细信息,我希望如果用户以前存在,他的行应该更新,我该如何通过替换来实现?
答案 0 :(得分: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将不起作用。