Saya mencoba menggunakan MySQL untuk membuat tampilan dengan klausa "DENGAN"
WITH authorRating(aname, rating) AS
SELECT aname, AVG(quantity)
FROM book
GROUP BY aname
Tapi sepertinya MySQL tidak mendukung ini.
Saya pikir ini cukup standar dan saya yakin Oracle mendukung ini. Apakah ada cara untuk memaksa MySQL menggunakan klausa "WITH"? Saya sudah mencobanya dengan mesin MyISAM dan innoDB. Keduanya tidak berfungsi.
Anda mungkin tertarik dengan pemikiran seperti ini:
sumber
Subquery
adalah nama yang saya gunakan untuk tabel turunan itu sendiri. Saat Anda menggunakanfrom ( ... )
Anda membuat sesuatu seperti tabel sementara (tabel turunan) dan itu membutuhkan nama. Itu sebabnya saya menggunakanas Subquery
. Menjawab pertanyaan Anda, ya, Anda bisa, tetapi Anda harus memberi nama pada tabel turunan luar (tepat sebelumGroup By
). Semoga membantu.Anda memiliki sintaks yang benar:
Namun, seperti yang disebutkan orang lain, MySQL tidak mendukung perintah ini. DENGAN ditambahkan di SQL: 1999; versi terbaru dari standar SQL adalah SQL: 2008. Anda dapat menemukan beberapa informasi lebih lanjut tentang database yang mendukung berbagai fitur SQL: 1999 di Wikipedia .
MySQL secara tradisional sedikit tertinggal dalam dukungan untuk standar SQL, sedangkan database komersial seperti Oracle, SQL Server (baru-baru ini), dan DB2 telah mengikuti mereka sedikit lebih dekat. PostgreSQL biasanya cukup memenuhi standar juga.
Anda mungkin ingin melihat peta jalan MySQL; Saya tidak sepenuhnya yakin kapan fitur ini mungkin didukung, tetapi sangat bagus untuk membuat kueri tersingsing yang dapat dibaca.
sumber
Oracle mendukung WITH.
Ini akan terlihat seperti ini.
@ysth WITH sulit untuk Google karena ini adalah kata umum yang biasanya dikecualikan dari pencarian.
Anda ingin melihat dokumen SELECT untuk melihat cara kerja pemfaktoran subkueri.
Saya tahu ini tidak menjawab OP tetapi saya sedang membersihkan kebingungan yang mungkin telah dimulai.
sumber
Berdasarkan jawaban dari @Mosty Mostacho, berikut ini cara Anda melakukan sesuatu yang setara di MySQL, untuk kasus tertentu dalam menentukan entri apa yang tidak ada dalam tabel, dan tidak ada di database lain.
Anda mungkin ingin menggunakan editor teks dengan kemampuan makro untuk mengonversi daftar nilai menjadi klausa gabungan pemilihan yang dikutip.
sumber
MariaDB sekarang mendukung WITH. MySQL untuk saat ini tidak. https://mariadb.com/kb/en/mariadb/with/
sumber
sumber
Apakah Anda pernah mencoba Tabel Sementara? Ini memecahkan masalah saya:
Kemudian Anda dapat menggunakan tabel ini di setiap pilihan di sesi ini:
sumber