MySQL:从A列获取对应于B列MIN的值

时间:2013-01-19 14:11:22

标签: php mysql sql select

我有下表:

 step_id    hospital_id     step_number     step_name
    17                  8            4          First Step
    18                  8            1          Second Step
    19                  8            2          Third Step
    20                  8            3          Finance Approval

我要做的是获取与最小步数对应的step_id。所以在上面的例子中我正在寻找step_id 18。

在查看了很多帖子后,我一直在尝试以下各种变体,但无济于事:

SELECT `step_id`
    FROM `progress_steps`
    WHERE `hospital_id` = 8
    GROUP BY `step_id`
    HAVING MIN(`step_number`)

它似乎已经为其他人工作,但上面返回示例中的所有行以及我尝试过的其他变体只给我step_id 17。

2 个答案:

答案 0 :(得分:4)

您可以使用ORDER BYLIMIT

来实现这一目标
SELECT  *
FROM    tableName
WHERE   hospital_id = 8
ORDER   BY  step_number ASC
LIMIT   1

或者如果要获得具有相同最低step_number的多行,请使用子查询:

SELECT  *
FROM    tableName
WHERE   step_Number =
    (
        SELECT  step_Number
        FROM    tableName
        WHERE   hospital_id = 8
        ORDER   BY  step_number ASC
        LIMIT 1
    )

答案 1 :(得分:2)

试试这个

SELECT `step_id`
FROM `progress_steps`
WHERE `hospital_id` = 8
Order BY `step_id` 
LIMIT 1