MySQL DISTINCT显示多个结果
我试图在最后10分钟内得到唯一的MAC地址,但由于结果中的某些原因,有些结果很简单,甚至更频繁 nID是唯一的数字1、2、3等 nLocationID只是一个自动递增的数字,如1、2、3等 sMAC是一张桌子,看起来像:MySQL DISTINCT显示多个结果,mysql,Mysql,我试图在最后10分钟内得到唯一的MAC地址,但由于结果中的某些原因,有些结果很简单,甚至更频繁 nID是唯一的数字1、2、3等 nLocationID只是一个自动递增的数字,如1、2、3等 sMAC是一张桌子,看起来像: ae:b6:42:f3:ac:98 2018-02-14 15:43:20.506827 1 ae:b6:42:f3:ac:98 2018-02-14 15:43:20.475822 1 00:10:20:57:67:bc 2018-02-14 15:43:20
ae:b6:42:f3:ac:98 2018-02-14 15:43:20.506827 1
ae:b6:42:f3:ac:98 2018-02-14 15:43:20.475822 1
00:10:20:57:67:bc 2018-02-14 15:43:20.105565 1
00:10:20:57:67:bc 2018-02-14 15:43:20.105565 1
00:10:20:57:67:bc 2018-02-14 15:43:20.105565 1
b8:76:3f:76:db:b3
sTimeScanned也是一个包含以下内容的表:
2018-02-14 14:55:45.145049
这是我正在使用的查询
SELECT DISTINCT(sMAC), sTimeScanned, nLocationID
from scan_data where sTimeScanned > date_sub(now(), interval 10 minute)
and nLocationID = 1 order by nID DESC;
例如,我的输出如下所示:
ae:b6:42:f3:ac:98 2018-02-14 15:43:20.506827 1
ae:b6:42:f3:ac:98 2018-02-14 15:43:20.475822 1
00:10:20:57:67:bc 2018-02-14 15:43:20.105565 1
00:10:20:57:67:bc 2018-02-14 15:43:20.105565 1
00:10:20:57:67:bc 2018-02-14 15:43:20.105565 1
有人知道为什么要提前感谢吗。您想要一个结果集,每个不同的
sMac
值只有一行。这需要一个分组依据
功能。你可能需要
SELECT sMAC, MAX(sTimeScanned) sTimeScanned
FROM scan_data
where sTimeScanned > date_sub(now(), interval 10 minute)
and nLocationID = 1
GROUP BY sMac
如果您希望在特定扫描时间内从scan\u数据
表中获取其他详细信息,则需要一个嵌套查询来检索它们。它使用上述查询为每个sMac找到适当的扫描时间,然后使用JOIN从原始表中提取详细信息
SELECT a.sMac, a.sTimeScanned, a.nLocationID
FROM scan_data a
JOIN (
SELECT sMAC, MAX(sTimeScanned) sTimeScanned
FROM scan_data
where sTimeScanned > date_sub(now(), interval 10 minute)
and nLocationID = 1
GROUP BY sMac
) b ON a.sMac = b.sMac AND a.sTimeScanned = b.sTimeScanned
ORDER BY a.nID
请注意,DISTINCT不是一个函数。请参阅:DISTINCT操作整行,而不是特定字段。由于时间戳不同,您的行不同。想想看——如果它按您预期的方式工作,那么您希望它在一行上输出与MAC地址相关的(可能)多个时间戳中的哪一个?这没有任何意义。我猜您可能只是想从输出中排除sTimeScanned字段,您需要切换到GROUP BY以进行适当的聚合。您还需要为每个不同的
smac
指定要扫描的stimescanned
。类似于从扫描数据中选择sMAC、max(sTimeScanned)、nLocationID,其中sTimeScanned>date\u sub(现在(),间隔10分钟)和nLocationID=1组(按sMAC),nLocationID顺序(按nID描述)