Saya menjalankan kueri ini di MySQL
SELECT ID FROM (
SELECT ID, msisdn
FROM (
SELECT * FROM TT2
)
);
dan itu memberikan kesalahan ini:
Setiap tabel turunan harus memiliki alias sendiri.
Apa yang menyebabkan kesalahan ini?
Saya menjalankan kueri ini di MySQL
SELECT ID FROM (
SELECT ID, msisdn
FROM (
SELECT * FROM TT2
)
);
dan itu memberikan kesalahan ini:
Setiap tabel turunan harus memiliki alias sendiri.
Apa yang menyebabkan kesalahan ini?
)
dalam kueri dengan banyakUNION ALL
s.Jawaban:
Setiap tabel turunan (sub-kueri AKA) memang harus memiliki alias. Yaitu setiap permintaan dalam tanda kurung harus diberi alias (
AS whatever
), yang dapat digunakan untuk merujuknya di sisa permintaan luar.Dalam kasus Anda, tentu saja, seluruh permintaan dapat diganti dengan:
sumber
AS
pernyataan. Saya pikir Anda hanya menunjukkan tulisan singkat. menghapus downvote saya.SELECT...FROM...WHERE x NOT IN (subquery) AS T
akan memicu kesalahanSaya pikir itu meminta Anda untuk melakukan ini:
Tetapi mengapa Anda menulis kueri ini sejak awal?
sumber
Berikut adalah contoh berbeda yang tidak dapat ditulis ulang tanpa alias (tidak bisa
GROUP BY DISTINCT
).Bayangkan sebuah tabel bernama
purchases
yang mencatat pembelian yang dilakukan olehcustomers
distores
, yaitu tabel banyak ke banyak dan perangkat lunak perlu mengetahui pelanggan mana yang telah melakukan pembelian di lebih dari satu toko:..akan putus dengan kesalahan
Every derived table must have its own alias
. Memperbaiki:(Catat
AS custom
alias).sumber