2011-01-20 2 views
2

두 개의 테이블 a와 b에는 필드 이름이 있습니다.노동 조합 두 테이블 및 두 테이블에 존재하는 이름과 같은 공통 필드에 의한 순서

이 두 테이블의 데이터를 나열해야합니다. 내가 노조를 사용하여 생각했지만 결과 목록에서 첫 번째 테이블의 데이터가 나타난 다음 두 번째 테이블이 나타납니다.

원하는 것은 필드 이름으로 정렬하는 것이므로 결과는 이름순으로 정렬 된 이름순으로 두 테이블이 섞여 있어야합니다. ,

SELECT tablea.firstname, tablea.middlename, tablea.lastname, tableb.phone 
FROM tablea, tableb 
WHERE tablea.ID = tableb.ID 

다음 :

답변

3
select slug, name, 1 as mt 
    from tablea 
union 
select slug, name, 0 as mt 
    from tableb 
order 
    by name; 

위의 사항은 저에게 잘 맞습니다. 이 결과에 합병증이있을 것인가?

+1

Union은 중복 행을 제거합니다. "mt"열로 인해 tablea, tableb의 행이 중복되지는 않지만 두 테이블 중 하나에 dups가 있으면 제거됩니다. DUP를 유지해야하는 경우 "all all"을 사용하십시오. –

0

는 같은 조인 쿼리를 사용할 수, 쿼리에

SELECT field1 FROM TABLE1 WHERE 1 
UNION SELECT field1 FROM TABLE2 WHERE 1 

는 u는이

SELECT * FROM (SELECT field1 FROM TABLE1 WHERE 1 
UNION SELECT field1 FROM TABLE2 WHERE 1) AS `result` ORDER BY `result`.`field1` 
+0

WHERE 1은 정말 유효한 구문입니까? – onedaywhen

0

또는처럼 그것을 하위 쿼리를 만들 수 있습니다한다고 가정 해 봅시다 당신이 원하는 결과를 정렬 할 수 있습니다.

관련 문제