cari

Rumah  >  Soal Jawab  >  teks badan

Kumpulan MYSQL mengikut nilai terakhir tetapi bersyarat

Saya akan terangkan keadaan saya. MySQL 5.7

Saya mempunyai 2 jadual: Pendaftaran dan Mudah Alih. Kedua-dua jadual ini mempunyai IDMovement persamaan supaya saya boleh menyertainya

Soalan saya: Saya perlu mengumpulkan mengikut lajur Registry (iaitu lajur varchar) dan saya perlu menyemak MAX IDMovement. Dalam baris ini, terdapat satu lagi lajur yang dipanggil IDCausal. Langkau jika MAX IDMovement pada IDCasual berbeza daripada 21. Jika tidak, kembalikan baris itu.

Saya akan berikan contoh perkara yang saya lakukan:

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

P.S. DI MANA hanya contoh, saya perlu menanyakan setiap pendaftaran.

Nilai pulangan pendaftaran 2SST0160 ialah:

IDMovement   IDCausal  Registry
5550         21        2SST0160
9817         5         2SST0160

Dalam contoh, MAX IDMovement ialah 9817, tetapi IDCausal ialah 5, jadi hasil jangkaan pertanyaan dalam contoh ini ialah TIADA APA-APA. Jika IDCausal ialah 21, hasil yang dijangkakan hanyalah baris 21. Untuk setiap pendaftaran, saya menjangkakan hasilnya adalah 0 atau 1 baris setiap pendaftaran.

Semoga saya menjelaskannya, terima kasih atas bantuan anda!

P粉037450467P粉037450467454 hari yang lalu455

membalas semua(1)saya akan balas

  • 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;

    balas
    0
  • Batalbalas