2016-09-06 4 views
0

Как выбрать строки и отобразить их БЕЗ игнорирования любых повторяющихся значений? Я просто хочу, чтобы они отображались как есть независимо от повторения запроса или значения?MySQL select WITHOUT игнорирует дубликаты?

У меня есть две базы данных, из которых мне нужно извлечь информацию. Первая БД имеет номер счета-фактуры клиента и идентификатор клиента, отсюда я получаю идентификатор клиента для всех счетов-фактур. У некоторых клиентов может быть только 1 счет-фактура, а у другого клиента могут быть 3 счета-фактуры. Теперь, как только эти данные потянуты, я перехожу во вторую базу данных и вытаскиваю все телефонные номера этого клиента, используя идентификатор пользователя. Вот как выглядит мой запрос.

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 запросы повторяют за тот же идентификатор пользователя, однако мне они нужны, как это потому, что эти данные переходит в лист первенствовать и есть 2 счета-фактуры номера ждут телефона клиента номер в качестве входных данных в столбце рядом с ними.

Выход запроса:

9123456789 
8987123456 
9987654321 

Есть ли способ я могу получить MySQL, чтобы дать мне значения, независимо от их быть дублирующие запросы? Единственная альтернатива, которую я имею, это использовать выход, а затем сделать vlookup в excel для идентификатора клиента, который будет больно каждый раз, когда я хочу получить результаты.

Заранее благодарю вас за помощь!

+1

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

+1

Поведение UNION по умолчанию состоит в том, что дубликаты строк удаляются из результата. Дополнительное ключевое слово DISTINCT не имеет никакого эффекта, кроме значения по умолчанию, поскольку оно также указывает удаление дубликатов строк. С необязательным ключевым словом ALL удаление дубликатов строк не происходит, и результат включает все соответствующие строки из всех операторов SELECT. –

+1

Попробуйте использовать UNION ALL вместо UNION – 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 

Выберите номер из db_name ГДЕ userid = 436 И customid = 8

+0

Спасибо! Это сработало! – cyrus

Смежные вопросы