2015-02-18 4 views
1

Может ли кто-нибудь помочь мне скрывать эту инструкцию SQL в MySQL. Его используется для данных jQuery для создания постраничных страниц на стороне сервера. Я попытался с помощьюMySQL Over Convert from SQL to MySQL

@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

set @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 

ответ

1

Вы можете использовать переменные:

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 столбец в таблице, вы могли бы просто использовать limit и offset.

+0

Благодаря ли она сортируется теперь конечным запрос 'SELECT * FROM (SELECT (@rn: = @rn + 1), А.С. RowNumber, item_id, описание FROM (SELECT (SELECT COUNT (item.item_id) ОТ пункта ) AS TotalRows, (SELECT COUNT (item_id) из пункта) AS TotalDisplayRows, item_id, описание из п где ЗАБЛОКИРОВАН = '0') RawResults перекрестное соединение (SELECT @rn: = 0) VARS ) Результаты WHERE RowNumber МЕЖДУ 1 И 10' – Bicklp

+0

Ive добавил еще одну проблему abo если у вас будет время ... Большое спасибо. Im, чтобы вывести TotalRows и TotalDisplayRows в данные, не уверен, как это сделать – Bicklp

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