【问题标题】:Selecting each Nth row does not work选择每第 N 行不起作用
【发布时间】:2013-07-22 12:39:32
【问题描述】:

我在my SQLFiddle 中开发了一个SQL 命令。 MySQL 服务器设置为版本 5.1.61,因为我的服务器运行 5.5.31-0+wheezy1。我将架构复制到我的服务器并创建了一个执行代码的 PHP 脚本(在 here 的帮助下)。但是我的服务器返回这个:

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 'SELECT * FROM (SELECT (@x:=@x+1) AS x, `ID` FROM realvalues) t WHERE x MOD 3 =' at line 2

SQL 命令:

SET @x := 0;
SELECT *
FROM (SELECT (@x:=@x+1) AS x, `ID` FROM realvalues) t
WHERE x MOD 3 = 0;

为什么它可以在 SQLFiddle 上运行而在我的服务器上却不运行?

【问题讨论】:

  • 您是否知道您不能使用单个 mysql_query() 函数运行多个查询?
  • mysql_query()mysqli::query() 相同,并且它们都不允许您使用多个 sql 语句
  • 谢谢!我通过 mysql 控制台客户端进行了尝试,一切正常。我不能接受你的评论。
  • 你可以接受 juergen 的,它可以避免你的问题与单个查询

标签: mysql sqlfiddle


【解决方案1】:
select * from 
(
  SELECT id, 
         @x := @x + 1 as rank
  FROM realvalues, (SELECT @x := 0) t
) a
where rank mod 3 = 0

SQLFiddle demo

【讨论】:

  • 服务器返回:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行使用 '@x := @x + 1 作为 rank FROM realvalues, (SELECT @x := 0) t WHERE x MOD' 附近的正确语法
猜你喜欢
  • 1970-01-01
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 2016-08-02
  • 2018-11-23
  • 2011-11-23
相关资源
最近更新 更多