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:
SELECT "Mike" AS FName
Walau bagaimanapun, cubaan untuk menyertai berbilang baris menggunakan pertanyaan berikut gagal:
SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName
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:
Public Sub CreateDualTable() Dim strSql As String strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);" CurrentProject.Connection.Execute strSql End Sub
Anda kemudian boleh menggunakan jadual ini dalam pertanyaan UNION:
SELECT "Mike" AS FName FROM Dual UNION ALL SELECT "John" AS FName FROM Dual;
Alternatif:
Sebagai alternatif, anda boleh menggunakan pernyataan SELECT dengan klausa TOP 1 atau WHERE untuk mengehadkan keputusan yang ditetapkan kepada satu baris:
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
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!