2016-09-05 32 views
0

我試圖從Moodle表中選擇列表中每個用戶的最後一行。 我的查詢是MySQL從表中的用戶列表中選擇每個用戶的最後一行

SELECT * 
FROM mdl_logstore_standard_log 
WHERE eventname='\\core\\event\\user_enrolment_created' 
AND courseid=34 
AND relateduserid IN(120,128) 
GROUP BY relateduserid;` 

和,我使用的表是:

MariaDB的[**** _ *****]>描述mdl_logstore_standard_log;

+-------------------+--------------+------+-----+---------+----------------+ 
| Field    | Type   | Null | Key | Default | Extra   | 
+-------------------+--------------+------+-----+---------+----------------+ 
| id    | bigint(10) | NO | PRI | NULL | auto_increment | 
| eventname   | varchar(255) | NO |  |   |    | 
| component   | varchar(100) | NO |  |   |    | 
| action   | varchar(100) | NO |  |   |    | 
| target   | varchar(100) | NO |  |   |    | 
| objecttable  | varchar(50) | YES |  | NULL |    | 
| objectid   | bigint(10) | YES |  | NULL |    | 
| crud    | varchar(1) | NO |  |   |    | 
| edulevel   | tinyint(1) | NO |  | NULL |    | 
| contextid   | bigint(10) | NO | MUL | NULL |    | 
| contextlevel  | bigint(10) | NO |  | NULL |    | 
| contextinstanceid | bigint(10) | NO |  | NULL |    | 
| userid   | bigint(10) | NO | MUL | NULL |    | 
| courseid   | bigint(10) | YES | MUL | NULL |    | 
| relateduserid  | bigint(10) | YES |  | NULL |    | 
| anonymous   | tinyint(1) | NO |  | 0  |    | 
| other    | longtext  | YES |  | NULL |    | 
| timecreated  | bigint(10) | NO | MUL | NULL |    | 
| origin   | varchar(10) | YES |  | NULL |    | 
| ip    | varchar(45) | YES |  | NULL |    | 
| realuserid  | bigint(10) | YES |  | NULL |    | 
+-------------------+--------------+------+-----+---------+----------------+ 

我與此查詢的問題是,它給我的第一行中的列表中的每個用戶ID,我希望是最後一次。我嘗試通過身份證desc順序,但沒有任何改變。

+0

你如何定義**最後一行**? – 1000111

+0

最後一次插入,最後一次自動增加編號 –

回答

1

你可以試試這個:

SELECT 
L.* 
FROM mdl_logstore_standard_log L 
INNER JOIN 
(

SELECT 
    relateduserid, 
    MAX(id) AS max_id 
FROM mdl_logstore_standard_log 
WHERE eventname='\\core\\event\\user_enrolment_created' 
AND courseid=34 
AND relateduserid IN(120,128) 
GROUP BY relateduserid 
)AS t 
ON L.id = t.max_id 

首先獲得最大的汽車增量的ID爲那些relateduserids然後在建立內部mdl_logstore_standard_logt表之間的連接會返回您的預期結果。

+0

謝謝,它的工作:) –

0

試試這個,但我沒有測試它

select * from mdl_logstore_standard_log where eventname='\\core\\event\\user_enrolment_created' and courseid=34 and relateduserid IN(120,128) GROUP BY relateduserid ORDER BY id DESC LIMIT 1; 
+0

您可以使用groupby也 – khakishoiab

+0

不,此查詢將所有結果限制爲1.我希望列表中每個用戶的1個結果。 –

+0

請稍等片刻 – khakishoiab

相關問題