我有下表:
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。
答案 0 :(得分:4)
您可以使用ORDER BY
和LIMIT
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