2016-09-06 9 views
0

重複する値を無視せずに行を選択して表示するにはどうすればよいですか?私はちょうどクエリや値の繰り返しに関係なく表示されますか?MySQLは重複を無視しないで選択しますか?

私は情報を引き出す必要がある2つのDBを持っています。最初のDBには、顧客の請求書番号と顧客IDがあります。ここから、すべての請求書の顧客IDが取得されます。一部の顧客には1つの請求書があり、別の顧客には3つの請求書があるかもしれません。さて、このデータが取り出されると、私は2番目のデータベースに行き、その顧客のすべての電話番号をユーザー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 

さて、中央の2つのクエリが同じユーザーIDのために繰り返しているので、このデータはExcelシートに入り、顧客の電話を待っている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

関連する問題