我无法使MySQL查询正常工作。我想查询每个唯一的“ srcmac”(源MAC地址)的最新条目。我可以通过它使它与LINQ-MSSQL一起使用
table.Where(g=> g.Srcintf != "port1")
.GroupBy(p=> p.Srcmac)
.Select(f=> f.First());
这是一些示例数据
itime ap srcintf srcip srcmac srcssid user
1558943089 port1 10.x.xx.189 username
1558943089 port1 10.x.xx.189 username
1558943089 ARC5 ARCFREE 192.xxx.xx.8 34:ab:xx:xx:e5:94 ARCFREE
1558943089 port1 10.x.x.13
1558943089 ARC3 ARCFREE 192.xxx.xx.143 b4:18:xx:xx:fa:d0 ARCFREE
1558943089 Outside STAFF-RF 172.xxx.x.2 8c:83:xx:xx:85:f0 STAFF username
1558943089 port1 10.xx.xxx.174 username
1558943089 Outside PUBLIC-RF 192.xxx.x.32 PUBLIC
1558943089 port1 10.x.xx.238 username
1558943089 port1 10.x.xx.28 username
1558943089 port1 10.x.xx.28 username
1558943089 ARC5 ARCFREE 192.xx.xx.8 34:ab:xx:xx:e5:94 ARCFREE
,但是无法将其转换为MySQL。 这是我到目前为止所拥有的
select p1.srcmac, from_itime(p1.itime), p1.srcip, p1.user, p1.srcintf,
p1.srcssid
FROM $log p1
INNER JOIN
(
SELECT max(from_itime(itime)) MaxPostDate, srcmac
FROM $log
where ( ( lower(`srcintf`) != lower('port1')))
GROUP BY srcmac
) p2
ON p1.srcmac = p2.srcmac
AND from_itime(p1.itime) = p2.MaxPostDate
WHERE ( ( lower(p1.srcintf) != lower('port1')))
order by from_itime(p1.itime) desc
我得到的垃圾场
srcmac from_itime srcip user srcintf srcssid
34:ab:37:xx:xx:94 2019-05-28 04:43:29 192.xxx.xx.8 ARCFREE ARCFREE
34:ab:37:xx:xx:94 2019-05-28 04:43:29 192.xxx.xx.8 ARCFREE ARCFREE
34:ab:37:xx:xx:94 2019-05-28 04:43:29 192.xxx.xx.8 ARCFREE ARCFREE
4a:0b:b2:xx:xx:db 2019-05-28 04:43:26 192.xxx.xx.115 ARCFREE ARCFREE
58:d5:6e:xx:xx:c5 2019-05-28 04:43:24 172.xx.x.5 XPUSER STAFF-R STAFF