이 예제에서 성명서는 무엇입니까? 데이터를 무작위로 생성하려고합니다

StackOverflow https://stackoverflow.com/questions/1413465

문제

INSERT INTO files (fileUID, filename)
WITH fileUIDS(fileUID) AS
( VALUES(1) UNION ALL
  SELECT fileUID+1 FROM fileUIDS WHERE fileUID < 1000 )
SELECT fileUID,
       TRANSLATE ( CHAR(BIGINT(RAND() * 10000000000 )), 'abcdefgHij', '1234567890' )
FROM fileUIDS;
도움이 되었습니까?

해결책

With Syntax는 로컬 온도 테이블 또는 인라인보기를 사용하는 것과 동일합니다. 내 아는 한, 그것은 SQL Server (2005+, Common Table Expressions) 및 Oracle (9i+, 서브 쿼리 팩터링)에서만 지원됩니다. 의도 된 용도는 단일 쿼리에서 사용되는 기본보기 (예 : 조인)를 여러 번 생성하는 것입니다.

다음은 일반적인 예입니다.

WITH example AS (
     SELECT q.question_id,
            t.tag_name
       FROM QUESTIONS q
       JOIN QUESTION_TAG_XREF qtf ON qtf.question_id = t.question_id
       JOIN TAGS t ON t.tag_id = qtf.tag_id)
SELECT t.title,
       e1.tag_name
  FROM QUESTIONS t
  JOIN example e1 ON e1.question_id = t.question_id

... 사용하면 동일한 결과를 반환합니다.

SELECT t.title,
       e1.tag_name
  FROM QUESTIONS t
  JOIN (SELECT q.question_id,
               t.tag_name
          FROM QUESTIONS q
          JOIN QUESTION_TAG_XREF qtf ON qtf.question_id = t.question_id
          JOIN TAGS t ON t.tag_id = qtf.tag_id) e1 ON e1.question_id = t.question_id

제공 한 예 :

WITH fileUIDS(fileUID) AS ( 
     VALUES(1) 
     UNION ALL
     SELECT t.fileUID+1 
       FROM fileUIDS t
      WHERE t.fileUID < 1000 )
INSERT INTO files 
    (fileUID, filename)
SELECT f.fileUID,
       TRANSLATE ( CHAR(BIGINT(RAND() * 10000000000 )), 'abcdefgHij', '1234567890' )
  FROM fileUIDS f;

... 재귀적인 것입니다. 그것은 1에서 시작하여 총 999 개의 파일 우드를 생성합니다 (0에서 시작한 경우 1,000이 될 것입니다).

다른 팁

WITH x AS (...)

이것은 출력을 취할 것입니다 ... 그리고 그것을 명명 된 테이블로 취급하십시오 x, 일시적으로.

WITH x AS (...)
SELECT * FROM x

이 진술은 본질적으로 당신에게 ... 출력이지만 대신 테이블로 참조됩니다. x

With Word는 공통 테이블 표현식 (CTE)을 만드는 데 사용됩니다. 이 경우 "Select FileUid, ..."부분이 데이터를 가져 오는 인라인 테이블을 생성합니다.

CTE (공통 테이블 표현)를 생성하고 있습니다. 이것은 기본적으로 어쨌든 생성, 삭제 또는 선언 할 필요가없는 테이블입니다. 배치가 실행 된 후 자동으로 삭제됩니다.

체크 아웃 http://4guysfromrolla.com/webtech/071906-1.shtml 더 많은 정보를 위해서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top