语法错误1064 Mysql(select * from employee limit(select count(*)/2 from employee);为什么在起始曲线括号处出现这个明显的语法错误

问题描述 投票:0回答:1

从员工限制中选择*(从员工中选择count(*)/2); 为什么在选择关键字之前的曲线括号处会出现这个明显的语法错误

我正在尝试选择给定表的前 50% 查询,因此我只是尝试从子查询中返回一半行数,然后将其作为限制值传递

mysql workbench
1个回答
0
投票

https://dev.mysql.com/doc/refman/8.0/en/select.html有关于MySQL的

SELECT
语句的详细文档,包括其所有子句。

它说:

LIMIT
子句可用于约束
SELECT
语句返回的行数。
LIMIT
接受一个或两个数字参数,它们必须都是非负整数常量,但以下例外:

  • 在准备好的语句中,可以使用

    LIMIT
    占位符标记指定
    ?
    参数。

  • 在存储的程序中,可以使用整数值例程参数或局部变量来指定

    LIMIT
    参数。

表达式(包括子查询)不是

LIMIT
子句中的合法参数。

一个简单的解决方案是在两个查询中完成任务:第一个查询获取

COUNT()
,然后在包含
LIMIT
的第二个查询中使用该值作为常量值。

并非每个任务都需要在单个 SQL 语句中完成。

© www.soinside.com 2019 - 2024. All rights reserved.