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 BYとを使用してそれを行うことができますLIMIT

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

または、同じ low を持つ複数の行を取得する場合は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 に答える