LIMIT子句导致mysql查询语法错误



我正在尝试运行MySQL查询,但出现以下错误。

错误:

DBD::mysql::st execute failed: 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 'LIMIT  50
# LIMIT 50
)' at line 20 at /usr/local/Call.pm line 626.

代码:

UPDATE schedule SET owner = ?
WHERE id in
(SELECT id from schedule
WHERE owner < 0
AND status IN ($STATUS_REQUESTED, $STATUS_NO_STATUS, $STATUS_IN_PROGRESS)
AND lastaction < TO_DATE(?, '$datefmt')
AND
  $self->{flowrate} >
(
  SELECT COUNT(*) FROM schedule b
  WHERE dialoutstart > b.dialoutstart
  AND owner < 0
  AND status IN ($STATUS_REQUESTED, $STATUS_NO_STATUS, $STATUS_IN_PROGRESS)
  AND lastaction < TO_DATE(?, '$datefmt')
)
AND LIMIT <= $self->{flowrate}
)

SQL版本:5.*.

是什么问题导致这里的语法错误?

您只需要删除;"与";在";LIMIT";。请参阅以下内容:https://dev.mysql.com/doc/refman/8.0/en/select.htmlhttps://dev.mysql.com/doc/refman/8.0/en/update.html

这是因为SELECT语句的LIMIT部分不是WHERE部分的一部分,而是它自己的一部分。

...
    [WHERE where_condition]
...
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
...

最新更新