Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Status Terkini untuk Semua Perkhidmatan Menggunakan Inner Join?

Bagaimana untuk Mendapatkan Status Terkini untuk Semua Perkhidmatan Menggunakan Inner Join?

Barbara Streisand
Lepaskan: 2025-01-05 13:49:40
asal
731 orang telah melayarinya

How to Retrieve the Latest Status for All Services Using an Inner Join?

Memilih daripada Dua Jadual dengan Inner Join untuk Status Terkini

Apabila anda mempunyai dua jadual yang mengandungi data berkaitan, ia menjadi perlu untuk mendapatkan maklumat khusus daripada kedua-dua jadual. Dalam senario ini, anda mempunyai dua jadual: Perkhidmatan dan Status. Jadual Perkhidmatan menyimpan nama dan ID, manakala jadual Status menjejaki status dan cap masa yang dikaitkan dengan setiap perkhidmatan.

Untuk mendapatkan semula status terkini bagi setiap perkhidmatan, anda boleh menggunakan operasi gabungan dalaman. Matlamatnya adalah untuk menggabungkan baris daripada kedua-dua jadual berdasarkan lajur service_id, memastikan hanya maklumat status terkini dikembalikan.

Malangnya, pertanyaan yang anda nyatakan hanya mendapatkan semula status terkini untuk perkhidmatan dengan service_id = 2. Untuk menangani had ini dan mendapatkan status terkini untuk semua perkhidmatan, pertimbangkan pernyataan SQL yang diubah suai berikut:

SELECT
  ser.id,
  ser.name,
  s.status,
  s.timestamp
FROM Service ser
INNER JOIN status AS s
  ON s.service_id = ser.id
INNER JOIN
  (
    SELECT
      service_id,
      MAX(timestamp) AS MaxDate
    FROM status
    GROUP BY service_id
  ) AS a
  ON a.service_id = s.service_id
    AND a.MaxDate = s.timestamp;
Salin selepas log masuk

Subquery dalam gabungan dalaman terakhir menghapuskan semua kecuali status dengan cap masa terkini untuk setiap perkhidmatan. Dengan membandingkan service_id dan memadankan cap masa terkini, anda boleh menjamin bahawa pertanyaan mengembalikan hasil yang diingini:

id name status timestamp
1 Test1 OK October 15, 2015 09:08:07
2 Test2 OK October 15, 2015 10:15:23

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Status Terkini untuk Semua Perkhidmatan Menggunakan Inner Join?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan