조인 없이 여러 테이블에서 선택하시겠습니까?
두 테이블에서 데이터를 선택하고 조인하지 않고 개별 행으로 표시하는 가장 쉬운 방법은 무엇입니까?두 테이블 모두 필드가 비슷하거나 일치하며 두 테이블에서 같은 달에 발생한 모든 행의 avg와 같은 집계 함수를 실행하고 싶습니다.
예를 들어, 한 시스템으로부터의 트랜잭션을 보여주는 테이블과 다른 시스템으로부터의 트랜잭션을 보여주는 테이블이 있습니다.양쪽 테이블에서 모든 트랜잭션을 별도의 행으로 가져올 수 있는 방법이 있습니까?테이블 1에 20개의 레코드가 있고 테이블 2에 30개의 레코드가 있다면 반환 시 50개의 열이 있었으면 합니다.
다음과 같은 작업을 수행할 수 있습니다.
SELECT ...
FROM (
SELECT f1,f2,f3 FROM table1
UNION
SELECT f1,f2,f3 FROM table2
)
WHERE ...
그UNION ALL
operator는 찾고 있는 것이기도 합니다.
이 연산자를 사용하면 여러 쿼리의 결과 집합을 연결하여 각 쿼리의 모든 행을 보존할 수 있습니다.주의:UNION
operator (미포함)ALL
키워드)를 지정하면 결과 세트에 존재하는 모든 "실행" 행이 삭제됩니다.그UNION ALL
연산자는 각 쿼리의 모든 행을 유지합니다(또한 중복 검사 및 제거 작업을 수행하는 오버헤드가 없으므로 성능이 향상될 수 있습니다).
각 열의 열 수와 데이터 유형은 각 쿼리에서 일치해야 합니다.쿼리 중 하나에 다른 쿼리보다 더 많은 열이 있는 경우 열과 데이터 유형을 "일치"하기 위해 다른 쿼리에 더미 식을 포함할 수 있습니다.종종 리터럴을 반환하는 각 쿼리의 SELECT 목록에 식(추가 열)을 포함하면 행의 "소스" 쿼리가 무엇인지 알 수 있습니다.
SELECT 'q1' AS source, a, b, c, d FROM t1 WHERE ...
UNION ALL
SELECT 'q2', t2.fee, t2.fi, t2.fo, 'fum' FROM t2 JOIN t3 ON ...
UNION ALL
SELECT 'q3', '1', '2', buckle, my_shoe FROM t4
이와 같은 쿼리를 괄호 세트로 감싸 인라인 뷰(또는 MySQL 언어에서는 "파생 테이블")로 사용하여 모든 행에 대해 집계 작업을 수행할 수 있습니다.
SELECT t.a
, SUM(t.b)
, AVG(t.c)
FROM (
SELECT 'q1' AS source, a, b, c, d FROM t1
UNION ALL
SELECT 'q2', t2.fee, t2.fi, t2.fo, 'fum' FROM t2
) t
GROUP BY t.a
ORDER BY t.a
다음 각주를 시험해 볼 수 있습니다.
SELECT * from table1,table2
더 복잡한 것:
SELECT table1.field1,table1.field2, table2.field3,table2.field8 from table1,table2 where table1.field2 = something and table2.field3 = somethingelse
질문이 이 경우 - ename, dname FROM emp, join을 사용하지 않고 dept를 선택합니다.
그러면 이렇게...
SELECT ename, (SELECT dname
FROM dept
WHERE dept.deptno=emp.deptno)dname
FROM EMP
출력:
ENAME DNAME
---------- --------------
SMITH RESEARCH
ALLEN SALES
WARD SALES
JONES RESEARCH
MARTIN SALES
BLAKE SALES
CLARK ACCOUNTING
SCOTT RESEARCH
KING ACCOUNTING
TURNER SALES
ADAMS RESEARCH
ENAME DNAME
---------- --------------
JAMES SALES
FORD RESEARCH
MILLER ACCOUNTING
14 rows selected.
이거 드셔보세요
SELECT t1.*,t2.* FROM t1,t2
표 1에서 *를 선택합니다. UNION 선택 * 표 2에서
Union은 컬럼이 아닌 행 단위로 데이터를 가져옵니다.따라서 당신이 관계도 없고 조인도 없는 두 개의 다른 테이블에서 컬럼 데이터를 가져오려는 나와 같은 경우.
내 경우 ID별로 주 이름과 국가 이름을 가져옵니다.두 개의 쿼리를 작성하는 대신 이 방법을 사용할 수 있습니다.
select
(
select s.state_name from state s where s.state_id=3
) statename,
(
select c.description from country c where c.id=5
) countryname
from dual;
여기서 dual은 단일 컬럼이 있는 더미 테이블입니다.표만 표시하면 됩니다.
이름으로 '테스트'를 선택하고(id=1인 직원 이름 선택), 주소로(id=2인 주소에서 이름 선택),
에는 두 표가 합니다.SMPPMsgLog
★★★★★★★★★★★★★★★★★」SMSService
column with with with 。serviceid
:
SELECT sp.SMS,ss.CMD
FROM vas.SMPPMsgLog AS sp,vas.SMSService AS ss
WHERE sp.serviceid=5431
AND ss.ServiceID = 5431
AND Receiver ="232700000"
AND date(TimeStamp) <='2013-08-07'
AND date(TimeStamp) >='2013-08-06' \G;
당신은 항상 나를 위해 이 일을 시도해 볼 수 있다.
query="SELECT * from tableX,tableY,table8";
언급URL : https://stackoverflow.com/questions/12095109/select-from-multiple-tables-without-a-join
'source' 카테고리의 다른 글
브라우저 뒤로 버튼 이벤트 검출 방법 - 크로스 브라우저 (0) | 2022.09.13 |
---|---|
numpy 배열의 일부 치수만 평탄하게 만드는 방법 (0) | 2022.09.13 |
PHP7의 개체 배열을 암시하는 함수 반환 형식 (0) | 2022.09.13 |
Jsoup 소켓 타임아웃예외: 읽기 시간이 초과되었습니다. (0) | 2022.09.13 |
SQL varchar 열 길이에 대한 모범 사례 (0) | 2022.09.13 |