ホームページ  >  に質問  >  本文

MYSQL は最後の値で条件付きでグループ化します

私の状況を説明します。 MySQL 5.7

レジストリとモバイルという 2 つのテーブルがあります。 これら 2 つのテーブルには IDMovement という共通点があるため、結合できます

###私の質問:

Registry 列 (varchar 列) でグループ化する必要があり、MAX IDMovement を確認する必要があります。この行には、IDCausal という名前の別の列があります。 MAX IDMovementIDCasual が 21 と異なる場合はスキップします。それ以外の場合は行を返します。

私がやったことの例を示します:

リーリー

WHERE は単なる例であり、各レジ​​ストリをクエリする必要があることに注意してください。

レジストリ 2SST0160 の戻り値は次のとおりです:

リーリー

この例では、MAX IDMovement は 9817 ですが、IDCausal は 5 であるため、この例のクエリの予期される結果は NOTHING です。 IDCausal が 21 の場合、期待される結果は 21 行のみです。各レジストリについて、結果はレジストリごとに 0 行または 1 行になると予想します。

理解できたと思います。ご協力ありがとうございました。

P粉037450467P粉037450467401日前412

全員に返信(1)返信します

  • P粉165522886

    P粉1655228862023-09-15 00:13:19

    WITH newtable AS ( SELECT
        m.IDMovement,
        mo.IDCausal,
        m.Registry
    FROM
        registry m
        JOIN movement mo ON m.IDMovement = mo.IDMovement
    WHERE
        m.Registry = '2SST0160' )
    SELECT * FROM newtable
        WHERE (SELECT IDCausal FROM newtable ORDER BY IDMovement DESC LIMIT 1) = 21
        ORDER BY IDMovement DESC LIMIT 1;

    返事
    0
  • キャンセル返事