簡體   English   中英

如何在group by語句中使用order by子句

[英]how use order by clause in group by statement

我有兩個表tbl_issue_log, tbl_magazine_issue

tbl_issue_log
============

+----------+--------+--------+-----------+---------------------+
| issue_id | mag_id | log_id | operation |    updated_time     |
+----------+--------+--------+-----------+---------------------+
| 2        | 1      | 1      | 1         | 2014-01-30 21:29:44 |
| 3        | 4      | 1      | 1         | 2015-01-30 21:29:44 |
| 2        | 1      | 1      | 3         | 2015-01-31 21:29:44 |
+----------+--------+--------+-----------+---------------------+

tbl_magazine_issue
=================
+----------+-------------+-------------+------------------+------------+------------+-------------------+---------------+
| ISSUE_ID | ISSUE_NAME  | MAGAZINE_ID | COVER_PAGE_THUMB | FROM_DATE  |  TO_DATE   | issue_description | login_page_no |
+----------+-------------+-------------+------------------+------------+------------+-------------------+---------------+
| 2        | test issue  | 1           | cover page       | 2014-01-30 | 2015-01-30 | sdssdg fsdf       | 20            |
| 3        | test issue1 | 4           | cover page1      | 2014-01-30 | 2015-01-30 | sdssdg fsdf       | 20            |
+----------+-------------+-------------+------------------+------------+------------+-------------------+---------------+

tbl_issue_log中包含相同問題ID的多個記錄。 我一次只想要一個問題,這必須是最新的更新時間。

我的查詢是這樣

SELECT 
    `tbl_issue_log`.`operation`,
    `tbl_magazine_issue`.`ISSUE_ID`,
    `tbl_magazine_issue`.`ISSUE_NAME`,
    `tbl_magazine_issue`.`MAGAZINE_ID`,
    `tbl_magazine_issue`.`COVER_PAGE_THUMB`,
    `tbl_magazine_issue`.`FROM_DATE`,
    `tbl_magazine_issue`.`TO_DATE`,
    `tbl_magazine_issue`.`issue_description`,
    `tbl_magazine_issue`.`login_page_no`
FROM
    `tbl_issue_log`
        LEFT JOIN
    `tbl_magazine_issue` ON tbl_magazine_issue.ISSUE_ID = tbl_issue_log.issue_id


WHERE
    (tbl_issue_log.mag_id = '1')
        AND (tbl_magazine_issue.ISSUE_STATUS = 3)
        AND (tbl_issue_log.updated_time > '2014-02-25 00:42:22')
GROUP BY tbl_issue_log.issue_id
ORDER BY tbl_issue_log updated_time DESC;

在這里,我得到了基於問題ID的輸出。 但沒有獲得最新的更新定時記錄。

如果有人對此有幫助,請幫助我。

您可以嘗試將子句更改為

ORDER BY tbl_issue_log.updated_time  DESC;

編輯---在對issue_id進行分組時,mysql將選擇與issue_id匹配的第一行。 該命令按順序運行,基本上不會返回您要查找的內容。 您可能需要為此使用子查詢方法。

select some_table.* FROM 
(
SELECT 
    MAX(tbl_issue_log.updated_time) AS updated_time,
    `tbl_issue_log`.`operation`,
    `tbl_magazine_issue`.`ISSUE_ID`,
    `tbl_magazine_issue`.`ISSUE_NAME`,
    `tbl_magazine_issue`.`MAGAZINE_ID`,
    `tbl_magazine_issue`.`COVER_PAGE_THUMB`,
    `tbl_magazine_issue`.`FROM_DATE`,
    `tbl_magazine_issue`.`TO_DATE`,
    `tbl_magazine_issue`.`issue_description`,
    `tbl_magazine_issue`.`login_page_no`
FROM
    `tbl_issue_log`
        LEFT JOIN
    `tbl_magazine_issue` ON tbl_magazine_issue.ISSUE_ID = tbl_issue_log.issue_id


WHERE
    (tbl_issue_log.mag_id = '1')
        AND (tbl_magazine_issue.ISSUE_STATUS = 3)
        AND (tbl_issue_log.updated_time > '2014-02-25 00:42:22')
GROUP BY tbl_issue_log.issue_id
) some_table
ORDER BY some_table.updated_time DESC;

嘗試這個

SELECT * FROM
(SELECT 
`tbl_issue_log`.`operation`,
`tbl_magazine_issue`.`ISSUE_ID`,
`tbl_magazine_issue`.`ISSUE_NAME`,
`tbl_magazine_issue`.`MAGAZINE_ID`,
`tbl_magazine_issue`.`COVER_PAGE_THUMB`,
`tbl_magazine_issue`.`FROM_DATE`,
`tbl_magazine_issue`.`TO_DATE`,
`tbl_magazine_issue`.`issue_description`,
`tbl_magazine_issue`.`login_page_no`
FROM
`tbl_issue_log`
    LEFT JOIN
`tbl_magazine_issue` ON tbl_magazine_issue.ISSUE_ID = tbl_issue_log.issue_id
WHERE
(tbl_issue_log.mag_id = '1')
    AND (tbl_magazine_issue.ISSUE_STATUS = 3)
    AND (tbl_issue_log.updated_time > '2014-02-25 00:42:22')
ORDER BY tbl_issue_log.updated_time DESC ) TEMP_TABLE
GROUP BY ISSUE_ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM