我想在空表中插入值,但我不能这样做。我使用了这个查询,但它失败了。
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
答案 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 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');