MYSQL如何在另一个select中选择一个字段最小的行

时间:2016-10-28 16:16:45

标签: mysql

我的表格ab_ws_zpt包含以下列:WS_IDZPT_IDabstand

Data of "ab_ws_zpt"这只是整个数据的简短摘要。 WS_ID上升到43,完全有600.000 ZPT_ID´s

我尝试从WS_ID的特定选项中选择具有最小abstand的行中的ZPT_ID

当我从整个表ab_ws_zpt中选择最小的abstand时,它起作用:

SELECT 
    WS_ID, ZPT_ID, abstand
FROM
    ab_ws_zpt
WHERE
    abstand = (SELECT MIN(abstand) from ab_ws_zpt);`

带来的结果为:Result of select

当我只选择一个特殊WS_ID的所有ZPT_ID时,它也有效:

SELECT 
    WS_ID, ZPT_ID, abstand
FROM
    ab_ws_zpt 
WHERE
    ZPT_ID = '70000003';

WS_ID 70000003的所有43 ZPT_ID会产生结果。

现在我尝试将两个语句组合成:

SELECT 
    WS_ID, ZPT_ID, abstand
FROM
    ab_ws_zpt
WHERE
    abstand = (SELECT 
            MIN(abstand)
        FROM
            (SELECT 
                WS_ID, b.ZPT_ID, abstand
            FROM
                ab_ws_zpt 
            WHERE
                ZPT_ID = '70000003')); 

数据库返回errorcode 1248:每个派生表都必须有自己的别名。

我尝试在两个选择中为表提供不同的别名,但错误仍然存​​在。我希望有人可以帮助我并纠正我的错误,或者告诉我另一种方式来获得我想要的东西。

这是我在这里的第一个问题,所以如果我的解释具有误导性,我很抱歉。我尽力使其易于理解。

1 个答案:

答案 0 :(得分:1)

请试一试:

SELECT 
    WS_ID, ZPT_ID, abstand
FROM
    ab_ws_zpt
WHERE
ZPT_ID = '70000003'
ORDER BY abstand ASC
LIMIT 1;