MySQL Over 从 SQL 到 MySQL 的转换

标签 mysql sql datatables

谁能帮我把这个 SQL 语句转换成 MySQL。 它被用于服务器端分页的 jQuery 数据表。 我试过使用

@curRank := @curRank + 1 AS rank

代替

row_number() OVER (ORDER BY  item_id  asc) AS RowNumber

但我一直收到语法错误

             CREATE TEMPORARY TABLE IF NOT EXISTS temp1 AS (SELECT * INTO temp1 FROM item where BLOCKED='0');            

            SELECT *
            FROM
                (SELECT row_number() OVER (ORDER BY  item_id  asc) AS RowNumber , *
                    FROM
                        (SELECT (SELECT count(temp1.NO)
                                FROM
                                    temp1) AS TotalRows
                            , ( SELECT  count(NO) FROM temp1  ) AS TotalDisplayRows ,*
                        FROM
                            temp1  ) RawResults) Results
            WHERE
                RowNumber BETWEEN 1 AND 10

感谢您的帮助,这是查询。但是我怎样才能将 TotalRows 和 TotalDisplayRows 返回到数据中呢?我不得不手动添加 item_id 和描述。我输出的列是 RowNumber、Item_Id、Description。我还需要 TotalRows amd TotalDisplayRows

设置@rn := 0;

SELECT *
              FROM (SELECT (@rn := @rn + 1) AS RowNumber,item_id,description
                    FROM
                        (SELECT (SELECT count(item.item_id)
                                FROM
                                    item) AS TotalRows
                            , ( SELECT  count(item_id) FROM item  ) AS TotalDisplayRows ,item_id,description
                        FROM
                            item  ) RawResults

                        ) Results
            WHERE
                RowNumber BETWEEN 1 AND 10

最佳答案

您可以使用变量:

CREATE TEMPORARY TABLE IF NOT EXISTS temp1 AS (SELECT * INTO temp1 FROM item where BLOCKED='0');            
    SELECT *
    FROM (SELECT (@rn := @rn + 1) AS RowNumber , *
          FROM (SELECT (SELECT count(temp1.NO)
                        FROM temp1
                       ) AS TotalRows,
                       (SELECT count(NO) FROM temp1  ) AS TotalDisplayRows ,*
                FROM temp1 
               ) RawResults CROSS JOIN
               (SELECT @rn := 0) vars
          ORDER BY item_id
          ) Results
    WHERE RowNumber BETWEEN 1 AND 10

如果您实际上不需要表格中的 RowNumber 列,您可以只使用 limitoffset

关于MySQL Over 从 SQL 到 MySQL 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28586110/

相关文章:

sql 一个表的两列引用另一表中的同一列

mysql - 从 mysql 中的非规范化数据中选择最新的

MySQL删除包含特定单词的行

php - Codeigniter:如何使用 jQuery 添加带有复选框的列以进行多项选择和删除

jquery - MVC 4 Jquery DataTable 分页丢失模型引用

mysql - 在 MySQL 中容纳所有 session 所需的最少 session 室数量

mysql - 如何从 mysql 表中删除 auto_increment

mysql - 仅显示来自 2 个查询的相同结果

mysql - 如何将索引从一个相同的表复制到另一个现有的相同表

javascript - 数据表:可以在事件监听器中使用each()吗?