집 >데이터 베이스 >MySQL 튜토리얼 >내 UNION 쿼리에서 '쿼리 입력에 최소한 하나의 테이블 또는 쿼리가 포함되어야 합니다.' 오류가 발생하는 이유는 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!