SQL 가상/임시 테이블 접근 방식 시연: 연관 배열에서 데이터 추출
P粉066224086
P粉066224086 2023-09-03 16:26:28
0
1
448

데이터베이스에 가상/임시 테이블을 생성하지 않고 표시하려면 간단한 SQL 쿼리가 필요합니다.

저는 PHP를 사용하여 데이터가 포함된 쿼리 문자열을 생성하고 있습니다.

현재 PHP 코드는 다음과 같습니다.

$array = [ ['id' => 1, '이름' => ['id' => 2, '이름' => ['id' => 3, '이름' => ]; $subQuery = "SELECT {$array[0]['id']} AS col1, '{$array[0]['name']}' AS col2" for ($i=1; $i < count($array); $i++) { $subQuery .= " UNION ALL SELECT {$array[$i]['id']}, '{$array[$i]['name']}'" } $sql = "cte AS 사용" ( {$하위 쿼리} ) SELECT col1, col2 FROM cte;'quot; echo $sql;

출력은 다음과 같습니다.

Cte AS 사용 ( SELECT 1 AS col1, 'one' AS col2 UNION ALL SELECT 2, 'two' UNION ALL SELECT 3, '3' ) cte에서 col1, col2 선택; // SQL의 출력 테이블 열1 열2 1개 2 2 3 3

여기서 이 검색어에 대한 아이디어를 얻었습니다.

그러나 이 쿼리의 문제점은 $array에 100개의 데이터가 있으면 UNION ALL 부분이 SQL에 100번 포함된다는 것입니다. 동시에 100개의 테이블을 조인하는 것과 같기 때문에 이것이 더 나은 SQL이라고 생각하지 않습니다.

WITH 절 대신 임시 테이블(CREATE TEMPORARY TABLE table_name)을 생성할 수도 있지만 이는 단일 쿼리가 아닙니다. 임시 테이블에 레코드를 삽입하려면 또 다른 쿼리가 필요합니다.

이 쿼리를 더 나은 방법으로 단순화하는 데 도움을 줄 수 있는 사람이 있습니까?

P粉066224086
P粉066224086

모든 응답 (1)
P粉781235689

MySQL 8을 사용하는 경우 다음과 같은json_table표현식을 사용할 수 있습니다.

으아악

PHP 온라인 편집기

MySQL 8.0에서 위 쿼리의 결과는 다음과 같습니다.

으아악
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!