Ralat pertanyaan UNION dalam enjin pangkalan data Jet/ACE: jadual atau pertanyaan hilang
Soalan:
Anda mungkin menghadapi ralat "Input pertanyaan mesti mengandungi sekurang-kurangnya satu jadual atau pertanyaan" semasa melaksanakan pertanyaan UNION yang tidak mengandungi sumber jadual.
Sebagai contoh, pertanyaan berikut adalah sah:
<code class="language-sql">SELECT "Mike" AS FName</code>
Walau bagaimanapun, cubaan untuk menyertai berbilang baris menggunakan pertanyaan berikut gagal:
<code class="language-sql">SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName</code>
Penyelesaian:
Ini bukan pepijat atau pengehadan enjin pangkalan data Jet/ACE. Untuk melaksanakan operasi UNION atau UNION ALL pada berbilang baris, anda mesti memasukkan klausa FROM, walaupun anda tidak merujuk sebarang medan dalam sumber data.
Contoh:
Anda boleh menggunakan jadual dengan hanya satu baris sebagai jadual maya, contohnya:
<code class="language-vba">Public Sub CreateDualTable() Dim strSql As String strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);" CurrentProject.Connection.Execute strSql End Sub</code>
Anda kemudian boleh menggunakan jadual ini dalam pertanyaan UNION:
<code class="language-sql">SELECT "Mike" AS FName FROM Dual UNION ALL SELECT "John" AS FName FROM Dual;</code>
Alternatif:
Sebagai alternatif, anda boleh menggunakan pernyataan SELECT dengan klausa TOP 1 atau WHERE untuk mengehadkan keputusan yang ditetapkan kepada satu baris:
<code class="language-sql">SELECT TOP 1 "Mike" AS FName FROM (SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName) AS SubQuery SELECT "Mike" AS FName FROM (SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName) AS SubQuery WHERE ID = 1</code>
Atas ialah kandungan terperinci Mengapa Pertanyaan UNION Saya Menyebabkan Ralat 'Input Pertanyaan Mesti Mengandungi Sekurang-kurangnya Satu Jadual atau Pertanyaan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!