簡體   English   中英

MySQL從表中的用戶列表中選擇每個用戶的最后一行

[英]MySQL select last row of each one user from a list of users in a table

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

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訂購,但沒有任何變化。

您可以嘗試以下方法:

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

首先獲取那些相關relateduserids ID的最大自動增量ID,然后在mdl_logstore_standard_logt表之間進行內部mdl_logstore_standard_log將返回您的預期結果。

試試這個,但我沒有測試

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;

暫無
暫無

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

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