我正在尝试编写一个检查多个表的sql,这就是我得到的:
UPDATE item_template SET BuyPrice = 0, SellPrice = 1 WHERE entry IN (SELECT item FROM npc_vendor WHERE entry IN (SELECT entry FROM creature WHERE area = 3998)));
现在我的错误是:
[Err] 1064 - 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 使用附近''在第1行
可能导致什么原因?
答案 0 :(得分:1)
您有两个开放(
和三个关闭)
此外,您应该尝试使用JOIN
而不是嵌套子查询来重写此内容。
答案 1 :(得分:1)
应该是
UPDATE item_template SET BuyPrice = 0, SellPrice = 1 WHERE entry IN (SELECT item FROM npc_vendor WHERE entry IN (SELECT entry FROM creature WHERE area = 3998));
答案 2 :(得分:1)
我认为你有太多关闭的问题。
答案 3 :(得分:1)
UPDATE item_template SET BuyPrice = 0, SellPrice = 1 WHERE entry IN (SELECT item FROM npc_vendor WHERE entry IN (SELECT entry FROM creature WHERE area = 3998));
这是正确的。你已经添加了额外的')'
答案 4 :(得分:1)
你有一个额外的关闭paranthese
UPDATE item_template
SET BuyPrice = 0,
SellPrice = 1
WHERE entry IN
(SELECT item
FROM npc_vendor
WHERE entry IN
(SELECT entry
FROM creature
WHERE area = 3998));
^^^^^^^ Remove one ) here
答案 5 :(得分:1)
正如Dave Mroz所说,如果你将multi-table update syntax与JOIN
一起使用,这个查询会更有效率,如下所示:
UPDATE item_template
inner join npc_vendor on npc_vendor.item = item_template.entry
inner join creature on creature.entry = npc_vendor.entry
SET item_template.BuyPrice = 0, item_template.SellPrice = 1
where creature.area = 3998;