2014-11-19 3 views
1

SELECT 문을 사용하여 도움을 요청합니다.두 개의 MYSQL SELECT 문을 하나로 결합/

1 : 지금 365 일에서 지금부터 사십일를 얻을

2 : 두 개의 문 사용 예 NOW 얻을 밖으로에 사십일

모든 365일 40 일간의 오프셋과 동일 지금

select 문 1 :

SELECT id FROM sales 
WHERE (saledate BETWEEN DATE_ADD(NOW(), INTERVAL 40 DAY) AND DATE_ADD(NOW(), INTERVAL 365 DAY)) 
ORDER BY saledate; 

선택 역 tement 2 :

SELECT id FROM sales 
WHERE (saledate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 40 DAY)) 
ORDER BY saledate; 

답변

0

처럼이 왜 그냥 or를 사용하여 결합 된 결과를 얻을 수하려고합니까? 물론

SELECT id 
FROM sales 
WHERE (saledate BETWEEN DATE_ADD(NOW(), INTERVAL 40 DAY) AND DATE_ADD(NOW(), INTERVAL 365 DAY)) OR 
     (saledate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 40 DAY)) 
ORDER BY saledate; 

이 더 간단하게 할 수 있습니다

SELECT id 
FROM sales 
WHERE saledate BETWEEN (NOW() AND DATE_ADD(NOW(), INTERVAL 365 DAY) 
ORDER BY saledate; 

이 내가 뭔가를 누락 될 수 있다고하지만, 너무 명백한 것 같다.

편집 :

이이 순서 문제의 경우는, 다음 union all하지 갈 수있는 방법입니다. 노동 조합은 결과의 순서를 보장하지 않습니다. 대신 다음을 수행하십시오.

SELECT id 
FROM sales 
WHERE saledate BETWEEN (NOW() AND DATE_ADD(NOW(), INTERVAL 365 DAY) 
ORDER BY (saledate >= DATE_ADD(NOW(), INTERVAL 40 DAY)) DESC, 
     saledate; 
+0

문제는 365 일 동안 계속 "40 일 동안"주문을 시작해야한다는 것입니다. 조금 이상하다 ... – Airman

+0

@Airman. . . 봐, 나는 뭔가를 놓쳤다. 결과를 특정 순서로 원할 경우 'order by'를 사용해야합니다. –

+0

작품 ... 고맙습니다 !!! – Airman

0

당신은 UNION

(SELECT id FROM sales 
WHERE (saledate BETWEEN DATE_ADD(NOW(), INTERVAL 40 DAY) 
AND DATE_ADD(NOW(), INTERVAL 365 DAY)) 
ORDER BY saledate) 

UNION 

(SELECT id FROM sales 
WHERE (saledate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 40 DAY)) 
ORDER BY saledate) 
+0

어쩌면? 나는 UNION을 시도하지 않았다. 나는 아직도 MYSQL을 배우고있다. 날짜별로 결과를 주문 하시겠습니까? – Airman

+0

@ Airman, 그렇게해야합니다. 그것을 시도하고 자신을 참조하십시오. – Rahul

+0

SQL_CALC_FOUND_ROWS를 사용하려면 첫 번째 SELECT 문에만 추가하면됩니까? 즉 SELECT SQL_CALC_FOUND_ROWS id FROM ... – Airman

관련 문제