NetLogs という名前の MySQL テーブルがあります
servername , session , label , occurence
| Nost | 11973 | Unknown | 1 |
| Nost | 11976 | Scan | 74 |
| Nost | 11976 | Unknown | 35 |
| Gold | 11998 | Attack | 1 |
私は得る必要があります
Nost | 11973|unknown|1|
Nost| 11976 |Scan | 74|
Gold|11998|Attack|1|
結果として。
私は試した:
select t1.* from NetLogs t1 left join NetLogs t2
on t1.servername=t2.servername and t1.session=t2.session and t1.occurence < t2.occurence
where t2.occurence is null;
しかし、エラー 1137 - テーブルを再開できません が表示されます。
また、最後に出現回数がなくても同じ結果に落ち着きます。
したがって、以下の解決策のいくつかは私にとってはうまくいかなかったので、一時テーブルではなく通常のテーブルとしてテーブルを作り直しました。一時テーブルで実行していたため、エラーが発生しました...
これは、私が望んでいたとおりに機能するものです。
select a.* from NetLogs a where a.occurence = (select max(occurence) occurence from NetLogs b where a.session = b.session and a.serverName = b.serverName);