문제

1 테이블에서 1 개의 필드를 선택하고 임시 테이블에 저장하고 있습니다.

때때로 그 테이블은 0 행으로 끝납니다.

20 개 이상의 필드가있는 다른 테이블에 그 필드를 추가하고 싶습니다.

필드 # 불일치로 인해 정규 노조가 저에게 효과가 없습니다. 비교할 것이 없기 때문에 외부는 나에게 효과가 없습니다. NVL은 첫 번째 온도 테이블에서 작동하지 않습니다.

누구든지 어떻게하는지 아십니까?

업데이트 :

나는 언급하지 못했습니다 .... 1 필드를 검색하는 테이블이 다른 경우에 일치하는 것을 발견하면 지금 사용하는이 코드는 작동합니다 ....

SELECT DISTINCT reqhead_rec.resp_name<br>
FROM reqhead_rec, biglist<br>
WHERE reqhead_rec.req_no = biglist.req_no
 AND reqhead_rec.frm = biglist.req_frm<br>
INTO TEMP grabname with no log;

SELECT biglist.*, grabname.resp_name<br>
FROM biglist, grabname<br>
ORDER BY prnt_item, account_amt<br>
INTO TEMP xxx with no log;
도움이 되었습니까?

해결책

어떤 필드와 일치합니까? BTW, 여기에 줄을서는 방법은 다음과 같습니다.

SELECT NULL, NULL, NULL, NULL, MySingleField, NULL, NULL, NULL... FROM #temp
UNION ALL
SELECT Col1, Col2, Col3, Col4, Col5, Col6,... FROM OtherTable

업데이트:

좋아, 업데이트를 읽은 후 ... 나는 당신이 노조를 전혀 원하지 않는다고 생각하지만 오히려 놀랍도록 간단한 하위 선택

SELECT
    *,
    (SELECT TOP 1 Name FROM Blah WHERE Blah.SomeID = MyTable.SomeID) AS ExtraCol
FROM
    MyTable

다른 팁

노동 조합이 아니라 가입을 원한 것 같습니다.

가입을하기 위해 아무것도 비교할 필요가 없습니다. 조인 조건을 지정하지 않으면 크로스 제품으로 끝납니다.

SELECT t20.*, t1.*
FROM table_with_20_columns AS t20
  LEFT OUTER JOIN temp_table_with_1_column AS t1 ON (1=1);

온도 테이블에 행이 0이되면 위의 쿼리 결과에서 널로보고됩니다.

그러나 임시 테이블에 여러 행이있는 경우 첫 번째 테이블로 크로스 제품을 얻을 수 있습니다. 나는 당신의 질문에서 당신이 원하는 것을 말할 수 없습니다.

편집하다: 에 JOIN 조건 ON 또는 USING 절은 SQL 표준에 따라 선택 사항이어야하지만 적어도 MySQL 5.0에서 테스트 할 때 해당 절을 생략하는 것은 구문 오류입니다. 그러나 당신은 사용할 수 있습니다 ON (1=1).

편집하다: 의견에서 귀하의 질문에 답변 :

SELECT COALESCE(reqhead_rec.resp_name, dflt.resp_name) AS resp_name
FROM (SELECT 'default name' AS resp_name) dflt
  LEFT OUTER JOIN reqhead_rec ON (1=1)
WHERE reqhead_rec.req_no = biglist.req_no AND reqhead_rec.frm = biglist.req_frm 
INTO TEMP grabname WITH NO LOG;

실제로, 당신은 온도 테이블을 완전히 건너 뛸 수 있습니다. 방금 메인 테이블에 합류했습니다 reahead_rec. 그 조건을 ON 가입 조항이 아닙니다 WHERE 절. 그런 다음 사용하십시오 COALESCE() 해당 쿼리의 선택 목록에서 다른 테이블에서 찾을 수없는 경우 기본 이름을 제공합니다.

SELECT b.*, COALESCE(r.resp_name, 'default name') AS resp_name
FROM biglist AS b
  LEFT OUTER JOIN reqhead_rec AS r
    ON (b.req_no = r.req_no AND r.frm = b.req_frm)
INTO TEMP xxx WITH NO LOG;

선택해보십시오 nvl(NULL,NULL) 결 측값

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