2016-09-05 10 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の最初の行がわかります。最後の行が必要です。私はIDのdescで注文しようとしたが、何も変わっていない。

+0

どのように**最終行**を定義しますか? – 1000111

+0

最後に挿入された最後の自動インクリメントID –

答えて

1

それをテストdidntは:

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 

まず、内側がmdl_logstore_standard_logtテーブル間の結合を作り、その後、それらのrelateduseridsのための最大の自動インクリメントIDを取得します期待どおりの結果を返します。

+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

okありがとうございました – khakishoiab

関連する問題