Kumpulan MYSQL mengikut nilai terakhir tetapi bersyarat
P粉037450467
P粉037450467 2023-09-14 15:37:56
0
1
366

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粉037450467
P粉037450467

membalas semua(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;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!