繁体   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