Bagaimana untuk mengembalikan berbilang baris data apabila hanya satu pembolehubah unik tersedia untuk klausa di mana?
P粉094351878
P粉094351878 2023-09-13 17:31:35
0
1
521

Saya pada masa ini mempunyai pertanyaan MySQL yang sangat mudah yang kelihatan seperti ini:

SET @recordID = 60749;
SELECT netID, ID, recordID, team
FROM NetLog
WHERE recordID = @recordID;

ID rekod pembolehubah adalah unik untuk setiap baris dan merupakan satu-satunya pembolehubah yang tersedia untuk mendapatkan baris yang diingini.

Tetapi sekarang saya juga perlu mengembalikan mana-mana baris lain yang mempunyai nilai 'pasukan' yang sama dengan baris asal. Saya mencuba beberapa variasi tetapi ia sentiasa mengembalikan "#1242 - Subquery mengembalikan lebih daripada 1 baris".

SET @recordID = 60749;
SELECT a.netID, a.ID, a.recordID, a.team,
    (SELECT b.recordID FROM NetLog b WHERE b.team = a.team AND b.recordID <> a.recordID) as rID
FROM NetLog a
WHERE a.recordID = @recordID;

Saya ingin melakukan ini dalam satu pertanyaan jika boleh.

Bolehkah seseorang menunjukkan saya ke arah yang betul?

P粉094351878
P粉094351878

membalas semua(1)
P粉378890106

Gunakan UNION untuk menggabungkan pertanyaan.

WITH mainRow AS (
    SELECT netID, ID, recordID, team
    FROM NetLog
    WHERE recordID = @recordID
)
SELECT * FROM mainRow
UNION
SELECT b.netID, b.ID, b.recordID, b.team
FROM NetLog AS b
JOIN mainRow AS a ON b.team = a.team AND b.recordID <> a.recordID
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan