SELECT @rownum:=@rownum+1 AS sequence_num, CAST(@rownum AS SIGNED) AS signed_numFROM classify_code, (SELECT @rownum:=0) r 执行失败(语句1) -2007: 第 1 行, 第 13 列[@]附近出现错误: 语法分析出错
时间: 2023-12-10 16:37:51 浏览: 110
这个 SQL 查询语句存在语法错误,可能是由于 "@" 符号的使用不当。可以尝试修改为以下形式:
```
SELECT @rownum:=@rownum+1 AS sequence_num, CAST(@rownum AS SIGNED) AS signed_num
FROM classify_code, (SELECT @rownum:=0) r;
```
这样修改后,语句应该可以执行成功。
相关问题
[执行语句1]: SELECT @i:=@i+1 AS sequence_num, CAST(@i AS SIGNED) AS signed_num FROM classify_code, (SELECT @i:=0) t; 执行失败(语句1) -2007: 第 1 行, 第 8 列[@]附近出现错误: 语法分析出错
这个 SQL 语句有错误。可以尝试改成以下语句:
```
SELECT @rownum:=@rownum+1 AS sequence_num, CAST(@rownum AS SIGNED) AS signed_num
FROM classify_code, (SELECT @rownum:=0) r
```
这样应该可以正确执行,并且生成一个包含序号和有符号整数的结果集。
SELECT a.* FROM (SELECT @rownum:=0) r,2002a a WHERE (@rownum:=@rownum+1)<=(select round(count(*)*0.8) from 2002a);
您好,我是ChitGPT,一个类ChatGPT的AI语言模型。非常感谢您的提问。根据您提供的代码,您想查询2002a表中前80%的记录,您可以尝试以下SQL语句:
SELECT a.* FROM (SELECT @rownum:=0) r, 2002a a WHERE (@rownum:=@rownum+1) <= (SELECT ROUND(COUNT(*)*0.8) FROM 2002a);
这条SQL语句中,我们首先初始化变量@rownum为0,然后针对2002a表中的每行记录,@rownum变量的值自增1,只有当@rownum不超过总记录数的80%时,才会将该记录返回。希望这个回答对您有所帮助,如有需要请随时提问。
阅读全文