Subpertanyaan Skalar, Baris dan Jadual
Gunakan subpertanyaan yang mengembalikan satu nilai, satu baris atau seluruh jadual, dan letakkannya dalam klausa SELECT, FROM dan WHERE.
Subpertanyaan Skalar, Baris dan Jadual ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah Itu Subkueri?
Subkueri ialah SELECT di dalam pernyataan SQL lain. Subkueri boleh berbentuk:
- Subkueri skalar — mengembalikan satu nilai
- Subkueri baris — mengembalikan satu baris
- Subkueri jadual — mengembalikan relasi (digunakan dalam FROM)
Subkueri Skalar
Digunakan di mana-mana sahaja satu nilai diperlukan:
SELECT id, total,
total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';Subkueri Baris
Mengembalikan satu baris dengan berbilang lajur. Kurang lazim, dan kebanyakannya digunakan bersama pembina baris:
SELECT *
FROM orders
WHERE (status, country) = (
SELECT status, country FROM orders WHERE id = 1
);Subkueri Jadual dalam FROM
Anggap hasil kueri sebagai jadual sementara:
SELECT country, AVG(big_order_total) AS avg_big
FROM (
SELECT country, total AS big_order_total
FROM orders
WHERE total > 1000
) AS sub
GROUP BY country;Memberikan Alias kepada Subkueri FROM
Setiap subkueri FROM memerlukan alias dalam PostgreSQL — walaupun anda tidak menggunakannya:
SELECT * FROM (SELECT 1) sub; -- "sub" requiredSubkueri dalam WHERE
Tapis berdasarkan set nilai terbitan:
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);EXISTS / NOT EXISTS
Semak sama ada subkueri mengembalikan sekurang-kurangnya satu baris:
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);Subkueri dalam SELECT
Sisipkan subkueri skalar bagi setiap baris:
SELECT id, full_name,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;
-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.Subkueri sebagai Ungkapan
Subkueri skalar yang mengembalikan lebih daripada satu baris ialah ralat:
SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expressionBila Menyusun Semula kepada JOIN
Banyak ungkapan "x IN (SELECT...)" boleh ditulis semula sebagai JOIN. Pilih bentuk yang lebih jelas dibaca; perancang moden selalunya menghasilkan pelan yang sama.
Subkueri berbanding CTE
Jika anda memerlukan subkueri yang sama dua kali, berikan nama kepadanya dengan CTE — perkara ini dibincangkan dalam pelajaran seterusnya.
Imbas Kembali
Subkueri hadir dalam tiga bentuk.
- Skalar dalam SELECT/WHERE
- Baris dalam ujian kesamaan
- Jadual dalam FROM
- EXISTS untuk semakan "sebarang padanan"
Semakan Pantas
Bentuk subkueri manakah yang digunakan di dalam klausa FROM sebagai jadual sementara?
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “Subpertanyaan Skalar, Baris dan Jadual” percuma?
Ya — teks penuh “Subpertanyaan Skalar, Baris dan Jadual” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Subpertanyaan Skalar, Baris dan Jadual”?
Gunakan subpertanyaan yang mengembalikan satu nilai, satu baris atau seluruh jadual, dan letakkannya dalam klausa SELECT, FROM dan WHERE. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Subpertanyaan Skalar, Baris dan Jadual” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Subpertanyaan Skalar, Baris dan Jadual
- Subpertanyaan Berkorelasi berbanding Tidak Berkorelasi
- Ungkapan Jadual Biasa (WITH)
- CTE Rekursif untuk Hierarki