하위 쿼리/연합에 문제가 있습니다.MySQL 하위 쿼리가 거짓 데이터를 반환합니다.
내가 원하는 것은 다음과 같습니다. 나는 dc_all_orders라고하는 주문에 대해 "백업 테이블"(백업용이 아닌 일부 용도로 사용됩니다)을 가지고 있습니다. 두 개의 다른 테이블 wb_orders 및 wb_printed 있습니다. 순서는 먼저 wb_orders에 도달 한 다음 워크 플로 단계 후에 wb_printed에 들어갑니다. 우리는 일부 주문 항목이 누락 된 것을 보았습니다. 우리는 백업 테이블에 있지만 두 개의 주 주문 테이블에는 없습니다. 영향을받은 orderItem을 계산하려고했습니다. 나는 카운트가 0보다 커야한다는 것을 100 % 알고 있지만 0을 계속 리턴한다. 에 포함되어야하는 항목의 예 :
mysql> select orderId,productId from dc_all_orders where productId = '22040247153891';
+---------------------+----------------+
| orderId | productId |
+---------------------+----------------+
| 20319833369460309A | 22040247153891 |
+---------------------+----------------+
1 row in set (2.06 sec)
mysql> select * from wb_orders where productId = '22040247153891';
Empty set (0.00 sec)
mysql> select * from wb_printed where productId = '22040247153891';
Empty set (0.00 sec)
이 제품이 표시됩니다. 지금 :
mysql> select count(*) from (select productId from wb_orders UNION select productId from wb_printed) as x;
+----------+
| count(*) |
+----------+
| 4295961 |
+----------+
1 row in set (2 min 51.80 sec)
그래서 우리는 얼마나 많은 데이터가 있는지 알고 있습니다.
mysql> select count(*) from dc_all_orders WHERE productId NOT IN
-> (select productId from wb_orders UNION select productId from wb_printed);
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (11 min 9.20 sec)
설명 할 수 없습니다. 다른 방법으로 시도했지만 모든면에서 0을 보여줍니다. 하위 쿼리의 크기는 모두 생각할 수 있지만 로그를 확인하고 오류가 없으며 결과가 오류없이 반환됩니다.
Am가 분명한가요?
mysql> select count(productId) from dc_all_orders WHERE productId NOT IN (select productId from wb_orders) AND productId NOT IN (select productId from wb_printed);
+------------------+
| count(productId) |
+------------------+
| 0 |
+------------------+
1 row in set (6 min 3.07 sec)
편집 : : : 여기
는 다른 방법의 MySQL 버전 : "서버 버전 다음 IUS 커뮤니티 프로젝트에 의해 분산 5.1.65-IUS"는 CentOS는 5.8
이 데이터 유형은 무엇을 참여) ... 수행 할 작업에 따라
group by
또는distinct
를 적용해야 중복을 제거하기 위해? 당신이 정수 오버 플로우에 직면 수있는 것 같습니다 ... –productId 필드는 varchars 있습니다. –
두 표 중 하나만 포함하면 어떨까요? 그것은 작동합니까? dc_all_orders에서 count (productId)를 선택하십시오. productId가 아닌 경우 (wb_orders에서 productId 선택)] (솔루션을 찾지 못했지만 어떤 일이 발생했는지 확인하는 것입니다) – richardtz