SQL如何在比较两个SQL表时选择最大值

SQL如何在比较两个SQL表时选择最大值,sql,max,Sql,Max,我正在做一个项目,我被一个问题困住了: 我想创建一种基于wi-fi的GPS。 有两个表(用户和位置),我需要将结果放在第三个表中 第一个表是用户手机发送信息的位置 具有信号强度的电话MAC地址和无线接入点MAC。用户手机可以看到多个无线接入点 第二个表是存储所有已知无线接入点及其坐标(纬度和经度)的位置 以下是表格: 用户: | PhoneMac | apMac | signal | | user1 |11:11:11 | 20

我正在做一个项目,我被一个问题困住了:

我想创建一种基于wi-fi的GPS。 有两个表(用户和位置),我需要将结果放在第三个表中

第一个表是用户手机发送信息的位置

具有信号强度的电话MAC地址和无线接入点MAC。用户手机可以看到多个无线接入点

第二个表是存储所有已知无线接入点及其坐标(纬度和经度)的位置

以下是表格:

用户

| PhoneMac    |   apMac      |   signal  |  
|   user1     |11:11:11      |     20    |  
|   user1     |22:22:22      |     80    |  
|   user1     |33:33:33      |     50    |  
|   user1     |55:55:55      |     99    |  
|   user2     |11:11:11      |     60    |  
|   user3     |44:44:44      |     10    |  
|   user3     |11:11:11      |     90    |  
位置
表格:

| apMac           |   Lat       |   Lon     |  
|   11:11:11      |10.000       |30.000     |  
|   33:33:33      |30.000       |30.000     |  
|   44:44:44      |40.000       |40.000     |  
我需要一个从
用户
表中获取apMac的查询,检查他们是否在
位置
表中,并从找到的位置中选择信号最强的位置

所以结果应该是PhoneMac和所选AP的坐标。每个用户都应该这样做

使用上表,这应该是正确的结果:

| PhoneMac     |     Lat     |     Lon       |  
|   user1      |30.000       |30.000         |  
|   user2      |10.000       |10.000         |  
|   user3      |10.000       |10.000         |  

    sql = "SELECT t1.PhoneMac, t1.apMac, t1.signal, t2.apMac, t2.lat, t2.lon,
    COUNT(t1.MacTel) AS num
    FROM users t1
    INNER JOIN locations t2
    ON t1.apMac=t2.apMac
    GROUP BY t1.PhoneMac
    ORDER BY num DESC";

这是我目前掌握的代码。我不知道如何包含关于选择信号最强的
apMac
的部分,因为现在它只返回列表中的第一个
apMac

在大多数数据库中,可以使用
行数()

在MySQL、Access或其他不支持ANSI标准的数据库中,
行号()
,您可以通过相关子查询来实现这一点。这里有一个方法:

select distinct PhoneMac,
        (select lat from Locations l where l.apMac = u.apMac order by signal limit 1) as lat,
        (select lon from Locations l where l.apMac = u.apMac order by signal limit 1) as long
from users u

这是什么数据库系统?SQL只是查询语言,而不是数据库产品。。。
select distinct PhoneMac,
        (select lat from Locations l where l.apMac = u.apMac order by signal limit 1) as lat,
        (select lon from Locations l where l.apMac = u.apMac order by signal limit 1) as long
from users u