Rumah > Soal Jawab > teks badan
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粉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;