MYSQL 分組依據最後一個值但有條件
P粉037450467
P粉037450467 2023-09-14 15:37:56
0
1
430

我將解釋我的情況。 MySQL 5.7

我有 2 個表:註冊表和移動。 這兩個表有IDMovement共同點,所以我可以加入它們

我的問題: 我需要按 Registry 列(是 varchar 列)進行分組,我需要檢查 MAX IDMovement。在此行中,還有另一列名為 IDCausal。如果 MAX IDMovement 上的 IDCasual 與 21 不同,則跳過。否則返回該行。

我將舉例說明我所做的事情:

SELECT
    m.IDMovement,
    mo.IDCausal,
    m.Registry 
FROM
    registry m
    JOIN movement mo ON m.IDMovement = mo.IDMovement 
WHERE
    m.Registry = "2SST0160"

附註WHERE 只是一個例子,我需要對每個註冊表進行查詢。

登錄 2SST0160 的回傳值為:

IDMovement   IDCausal  Registry
5550         21        2SST0160
9817         5         2SST0160

在範例中,MAX IDMovement 為 9817,但 IDCausal 為 5,因此本例中查詢的預期結果為 NOTHING。如果 IDCausal 為 21,則預期結果僅為 21 的行。對於每個註冊表,我預計每個註冊表的結果為 0 或 1 行。

希望我說得清楚,謝謝您的幫忙!

P粉037450467
P粉037450467

全部回覆(1)
P粉165522886
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;
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!