>데이터 베이스 >MySQL 튜토리얼 >내 UNION 쿼리에서 '쿼리 입력에 최소한 하나의 테이블 또는 쿼리가 포함되어야 합니다.' 오류가 발생하는 이유는 무엇입니까?

내 UNION 쿼리에서 '쿼리 입력에 최소한 하나의 테이블 또는 쿼리가 포함되어야 합니다.' 오류가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-12 09:03:46321검색

Why Does My UNION Query Cause a

Jet/ACE 데이터베이스 엔진의 UNION 쿼리 오류: 테이블 또는 쿼리 누락

질문:

테이블 소스가 포함되지 않은 UNION 쿼리를 실행할 때 "쿼리 입력에는 하나 이상의 테이블 또는 쿼리가 포함되어야 합니다."라는 오류가 발생할 수 있습니다.

예를 들어 다음 쿼리는 유효합니다.

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

그러나 다음 쿼리를 사용하여 여러 행을 조인하려는 시도는 실패합니다.

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

해결책:

이것은 Jet/ACE 데이터베이스 엔진의 버그나 제한 사항이 아닙니다. 여러 행에 대해 UNION 또는 UNION ALL 작업을 수행하려면 데이터 원본의 필드를 참조하지 않는 경우에도 FROM 절을 포함해야 합니다.

예:

단 하나의 행만 있는 테이블을 가상 테이블로 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

그런 다음 UNION 쿼리에서 이 테이블을 사용할 수 있습니다.

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

대안:

또는 TOP 1 또는 WHERE 절과 함께 SELECT 문을 사용하여 결과 집합을 하나의 행으로 제한할 수 있습니다.

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

위 내용은 내 UNION 쿼리에서 '쿼리 입력에 최소한 하나의 테이블 또는 쿼리가 포함되어야 합니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.