2016-09-06 4 views
0

중복 값을 무시하지 않고 행을 선택하고 표시하려면 어떻게해야합니까? 난 그냥 쿼리 또는 값 반복에 관계없이 그대로 표시할까요?MySQL은 중복을 무시하지 않고 선택합니까?

정보를 가져 오는 데 필요한 2 개의 DB가 있습니다. 첫 번째 DB에는 고객의 송장 번호와 고객 ID가 있으며 여기서부터 모든 송장에 대한 고객 ID를 얻습니다. 일부 고객은 1 개의 인보이스를 보유하고 다른 고객은 3 개의 인보이스를 보유 할 수 있습니다. 이제이 데이터를 가져 오면 두 번째 데이터베이스로 이동하여 해당 고객의 모든 전화 번호를 사용자 ID로 가져옵니다. 다음은 내 쿼리의 모양입니다. 당신이 볼 수있는

SELECT number FROM `db_name` WHERE `userid`=594 AND `customid`= 8 UNION 
SELECT number FROM `db_name` WHERE `userid`=147 AND `customid`= 8 UNION 
SELECT number FROM `db_name` WHERE `userid`=147 AND `customid`= 8 UNION 
SELECT number FROM `db_name` WHERE `userid`=436 AND `customid`= 8 

이제, 중간이 쿼리는 동일한 사용자 ID에 대한 반복되는대로이 데이터를 엑셀 시트로 전환되고 고객의 전화를 기다리는 2 개 송장 번호가 있기 때문에, 그러나 나는 그들을 필요 번호를 옆에있는 열에 입력하십시오.

쿼리의 출력은 다음과 같습니다

9123456789 
8987123456 
9987654321 

내가 MySQL은 나에게 값을주고받을 수있는 방법에 관계없이 중복 쿼리되는 있습니까? 내가 가지고있는 유일한 대안은 출력을 사용하고 결과를 원할 때마다 고통이 될 고객 ID를 위해 vlookup을 수행하는 것입니다.

도움을 주셔서 감사합니다.

+1

[UNION ALL (http://dev.mysql.com/doc/refman/5.7/en/union.html) – Uueerdo

+1

FROM UNION의 디폴트 동작은 중복 행이 결과에서 제거된다는 것입니다. 선택적인 DISTINCT 키워드는 중복 행 제거를 지정하기 때문에 디폴트 이외의 다른 효과는 없습니다. 선택적 ALL 키워드를 사용하면 중복 행 제거가 발생하지 않으며 결과에 모든 SELECT 문의 일치하는 모든 행이 포함됩니다. –

+1

UNION 대신 UNION ALL을 사용해보십시오 – RIKI

답변

0
SELECT number FROM `db_name` WHERE `userid`=594 AND `customid`= 8 UNION ALL 
SELECT number FROM `db_name` WHERE `userid`=147 AND `customid`= 8 UNION ALL 
SELECT number FROM `db_name` WHERE `userid`=147 AND `customid`= 8 UNION ALL 

SELECT 번호 userid = 436 db_name AND customid = 8

+0

고맙다! 그것은 효과가있다! – cyrus

관련 문제