1

我有下表:

 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。

4

2 回答 2

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
    )
于 2013-01-19T14:12:49.323 回答
2

试试这个

SELECT `step_id`
FROM `progress_steps`
WHERE `hospital_id` = 8
Order BY `step_id` 
LIMIT 1
于 2013-01-19T14:13:57.777 回答