语法错误:“)”在此位置无效,需要 EOF ,';'
Posted
技术标签:
【中文标题】语法错误:“)”在此位置无效,需要 EOF ,\';\'【英文标题】:Error in syntax: ")" is not valid at this position, expecting EOF , ';'语法错误:“)”在此位置无效,需要 EOF ,';' 【发布时间】:2022-01-04 23:48:57 【问题描述】:我必须编写一个查询来将标题 1001 的价格更改为最近出版的图书的价格。
我写了以下查询
update titles
set price = (Select Top 1 price from titles Group by price order by Max(pubDate))
where titleID = 1001
错误说在select top 1子查询的末尾需要一个':'在括号的末尾
但是,如果我从子查询中删除“前 1”部分,它会告诉我另一个错误,即我无法在 FROM 子句中指定目标表“标题”进行更新
有人知道怎么回事吗?
【问题讨论】:
你使用mysql还是mssql。该查询似乎是 MSSQL (TOP 1) 。请标记正确的 RDBMS 【参考方案1】:MySQL 使用LIMIT
,而不是TOP
(后者是 SQL Server 或 Access 语法)。即使解决了这个问题,您的更新仍然会出现语法问题。我会将您的问题表达为加入:
UPDATE titles t1
INNER JOIN
(
SELECT price, MAX(pubDate) AS maxPubDate
FROM titles
GROUP BY price
) t2
ON t2.price = t1.price
INNER JOIN titles t3
ON t3.price = t2.price AND
t3.pubDate = t2.maxPubDate
SET
t1.price = t3.price
WHERE
t1.titleID = 1001;
简单地说,上面的查询表示将具有相同价格的每组记录的price
更新为最近发布的记录的值。
【讨论】:
以上是关于语法错误:“)”在此位置无效,需要 EOF ,';'的主要内容,如果未能解决你的问题,请参考以下文章
SQL 编译错误:位置 157 的语法错误第 5 行意外'<EOF>'
通过 JTDS 驱动程序执行 SQL Server 调用时出现“第 24 行位置的 JDBC 转义语法无效 '=' 预期字符”错误的原因?