2016-06-13 1 views
1

이 내 실제 쿼리입니다 :MySQL의 ORDER

SELECT DISTINCT eventi.img AS img, posizione AS pos 
    FROM eventi 
    WHERE homepage =1 
    UNION 
    SELECT DISTINCT prodotti.img, prodotti.posizione 
    FROM prodotti 
    WHERE homepage =1 
    ORDER BY pos ASC 

는 "1,1,2,2"와 같은 위치를 반환합니다. "이벤트 위치 1,2 -> 제품 위치 1,2"와 같이 필드별로 위치를 반환하고 싶습니다. 이제 이벤트 및 제품 위치가 혼합되어 있습니다 ...

답변

2

당신은 이런 식으로 작업을 수행 할 수 있습니다

SELECT t.img,t.pos FROM (
    SELECT DISTINCT 1 as order_col, eventi.img AS img, posizione AS pos 
    FROM eventi 
    WHERE homepage =1 
    UNION 
    SELECT DISTINCT 2 , prodotti.img, prodotti.posizione 
    FROM prodotti 
    WHERE homepage =1) t 
ORDER BY t.order_col,t.pos 

당신은 당신이 선택 하위를 방지하고 내부로 주문을 넣을 수있는 order_col을 선택 걱정하지 마십시오. 함께

+0

일해 주셔서 감사합니다. – Tony33

0

docs에 따르면 사용자는 공용체가 있으므로 유니언의 최종 쿼리에서 절이 모든 쿼리에 적용되도록하려면 별도의 조치를 취해야합니다. 그리고 단지 그 최종 쿼리

SELECT ... 
UNION 
SELECT ... ORDER  <--order final query only 

참고 여분의 ()

(SELECT ...) 
UNION 
(SELECT ...) ORDER  <--order all queries as a single set 

대.

+0

'PRODOTTI FROM POS2 AS UNION (DISTINCT prodotti.img을 선택 prodotti.posizione (DISTINCT IMG AS eventi.img, 포스 ASC BY 홈페이지 = 1 개 순서 eventi FROM POS AS eventi.posizione 해당) 홈페이지 = 1 ORDER BY pos2 ASC)'지금 1-2-2-1 ... – Tony33

관련 문제