将值插入空表

时间:2014-08-16 14:39:17

标签: mysql sql

我想在空表中插入值,但我不能这样做。我使用了这个查询,但它失败了。

INSERT INTO phpbb_users(user_avatar) VALUES ('g2_1399642751.png') WHERE user_avatar = NULL;

语法错误。

尝试了这个:

INSERT OR IGNORE INTO phpbb_users(user_avatar) VALUES ('g2_1399642751.png');

有这个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR IGNORE INTO phpbb_users(user_avatar) VALUES ('g2_1399642751.png')' at line 1 

3 个答案:

答案 0 :(得分:2)

第一次查询

INSERT INTO phpbb_users(user_avatar) VALUES ('g2_1399642751.png') WHERE user_avatar = NULL;

问题是你不能像这样使用where子句和insert语句。您可以使用insert into ...然后使用where子句选择。

您可以尝试这样:

INSERT INTO phpbb_users(user_avatar) 
VALUES ('g2_1399642751.png') 

或者如果您想从表格中选择它,请尝试这样:

INSERT INTO phpbb_users(user_avatar) 
select 'g2_1399642751.png' from phpbb_users where user_avatar IS NULL;

虽然这个没有那么有利,因为这会在你的表中添加冗余代码。如果表phpbb_users为空,那么它将不会添加任何内容。

如果该值是现有值,那么您可以尝试更新这样的值:

UPDATE phpbb_users
  SET user_avatar = 'g2_1399642751.png'
WHERE user_avatar IS NULL

答案 1 :(得分:1)

更新

如果该行已经存在且您正在更改/更新它的值,请执行以下操作:

UPDATE phpbb_users
  SET user_avatar = 'g2_1399642751.png'
WHERE user_avatar IS NULL

INSERT

如果您要添加新行

INSERT INTO phpbb_users(user_avatar) 
VALUES ('g2_1399642751.png') 

答案 2 :(得分:0)

原因是在SQL中,您无法使用等号检查NULL。您必须改为使用IS(这是一个特殊情况)。同样对于INSERT,您不能使用WHERE条件。

INSERT INTO phpbb_users(user_avatar) VALUES ('g2_1399642751.png');

OR IGNORE的第二次尝试没有使用正确的语法。 OR IGNORE不会使SQL忽略语法错误,而只会忽略因密钥/约束违规而导致的错误.-正确的是:

INSERT IGNORE INTO phpbb_users(user_avatar) VALUES ('g2_1399642751.png');