Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan UNION dalam Microsoft Access Memerlukan Jadual, Walaupun untuk Pilihan Satu Baris?

Mengapa Pertanyaan UNION dalam Microsoft Access Memerlukan Jadual, Walaupun untuk Pilihan Satu Baris?

Barbara Streisand
Barbara Streisandasal
2025-01-12 09:09:42310semak imbas

Why Do UNION Queries in Microsoft Access Require a Table, Even for Single-Row Selects?

Pertanyaan Microsoft Access UNION: Keperluan Jadual

Dalam pangkalan data Microsoft Access, manakala penyataan SELECT ringkas yang mengambil satu baris boleh meninggalkan klausa FROM, operasi UNION atau UNION ALL memerlukan klausa FROM, walaupun untuk pilihan baris tunggal.

Had Pertanyaan

Mencuba UNION atau UNION ALL tanpa sumber data dalam klausa FROM mengakibatkan ralat: "Input pertanyaan mesti mengandungi sekurang-kurangnya satu jadual atau pertanyaan." Contohnya:

<code class="language-sql">SELECT "Mike" AS FName
UNION ALL
SELECT "John" AS FName</code>

Pertanyaan ini akan gagal.

Menyelesaikan Isu

Untuk menggunakan UNION atau UNION ALL dengan data berasaskan baris, klausa FROM adalah wajib, tidak kira sama ada medan jadual sumber dirujuk. Penyelesaian melibatkan mencipta jadual dummy, satu baris:

<code class="language-sql">CREATE TABLE Dual (id COUNTER PRIMARY KEY);
INSERT INTO Dual (id) VALUES (1);
ALTER TABLE Dual ADD CONSTRAINT there_can_be_only_one CHECK ((SELECT Count(*) FROM Dual) = 1);

SELECT "foo" AS my_text
FROM Dual
UNION ALL
SELECT "bar"
FROM Dual;</code>

Pendekatan lain melibatkan penggunaan TOP 1 atau klausa WHERE untuk mengehadkan hasil kepada satu baris daripada jadual sedia ada.

Pertimbangan Penting: Kekangan CHECK, yang diperkenalkan dalam Jet 4, hanya serasi dengan ADO. Menggunakan DAO mungkin menghasilkan ralat sintaks semasa melaksanakan penyelesaian ini.

Atas ialah kandungan terperinci Mengapa Pertanyaan UNION dalam Microsoft Access Memerlukan Jadual, Walaupun untuk Pilihan Satu Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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