MySql: как использовать rownumber с оператором запроса соединения? - PullRequest
1 голос
/ 20 февраля 2011

У меня есть MySQL Statement, который объединяет 2 таблицы и показывает результат в порядке Desc поля «touch».Это мой SQL-оператор

SELECT @rownum := @rownum +1 rownum, 
(IF( dm.Brand_FULL = '1', dd.Device_Brand, dm.Brand_Full )) AS Brand,
dd.Device_Model AS Model, 
CONCAT( dm.Service_provider, ' ', dm.Model_Full ) AS 'Marketing Name', 
max( Touch_Count ) AS Touch FROM Device_Details dd 
JOIN Device_Models dm ON dd.Device_Model = dm.Model_Short, 
(SELECT @rownum :=0 )r GROUP BY dd.Device_Model ORDER BY Touch_Count DESC

Это дает мне такой результат

enter image description here

Результат является совершенным и основан на нисходящем порядке Touchfield.Now проблема в том, что rownum не в порядке.Итак, как изменить оператор mySQL так, чтобы я мог получить порядок в порядке, не меняя порядок DESC поля Touch.

1 Ответ

6 голосов
/ 20 февраля 2011

Использовать подзапрос:

SELECT
    @rownum := @rownum + 1 AS rownum,
    T1.*
FROM
(
    SELECT
        IF(dm.Brand_Full = '1', dd.Device_Brand, dm.Brand_Full) AS Brand,
        dd.Device_Model AS Model, 
        CONCAT(dm.Service_provider, ' ', dm.Model_Full) AS 'Marketing Name', 
        MAX(Touch_Count) AS Touch
    FROM Device_Details dd 
    JOIN Device_Models dm
    ON dd.Device_Model = dm.Model_Short
    GROUP BY dd.Device_Model
) AS T1, (SELECT @rownum := 0) AS r
ORDER BY Touch DESC
...