我在 MS SQL Server 2016 中使用這個查詢:
select MAX(DATEADD(s, timecreated, '19700101 02:00:00')) AS last_active_on, courseid
from mdl_logstore_standard_log
where eventname = '\core\event\course_viewed'
group by courseid
order by last_active_on desc, courseid;
獲取 Moodle 中最近訪問的課程串列:
| last_active_on | 課程編號 |
|---|---|
| 2021-12-07 15:00:33.000 | 11450 |
| 2021-12-07 15:00:27.000 | 11365 |
| 2021-12-07 15:00:10.000 | 11363 |
| 2021-12-07 15:00:02.000 | 11068 |
| 2021-12-07 14:59:55.000 | 11430 |
| 2021-12-07 14:59:46.000 | 11171 |
| 2021-12-07 14:59:38.000 | 11413 |
| 2021-12-07 14:58:20.000 | 11362 |
| 2021-12-07 14:58:07.000 | 1 |
| 2021-12-07 14:56:36.000 | 11268 |
但是,我只想要“courseid”列,如下所示:
| 課程編號 |
|---|
| 11450 |
| 11365 |
| 11363 |
| 11068 |
| 11430 |
| 11171 |
| 11413 |
| 11362 |
| 1 |
| 11268 |
當我使用“ order by last_active_on desc, courseid; ”時,如何排除“last_active_on”列,同時保留 courseid 回傳的順序?
(timecreated 列包含一個 unix 時間戳,因此我使用 dateadd() 將其格式化為“正常”日期。)
uj5u.com熱心網友回復:
用ORDER BY運算式替換 中的別名,并從 之后的串列中洗掉運算式SELECT。
SELECT courseid
FROM mdl_logstore_standard_log
WHERE eventname = '\core\event\course_viewed'
GROUP BY courseid
ORDER BY max(dateadd(s, timecreated, '19700101 02:00:00')) DESC,
courseid ASC;
uj5u.com熱心網友回復:
您可以使用列位置
例如:
ORDER BY 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377485.html
下一篇:如何獲取范圍內的第一個可用數字
