Выбор уникальных данных после удаления пробелов

У меня есть следующий оператор MySQL:

SELECT registration FROM
(SELECT registration FROM installs
WHERE customer_id = :id1
UNION SELECT registration FROM services
WHERE customer_id = :id2
UNION SELECT registration FROM deinstalls
WHERE customer_id = :id3)
AS vehicles

Мне нужно выбрать уникальные «регистрации» из нескольких таблиц, что это утверждение делает почти идеально.

Выбирает AB01 CDE а также aB01 cdE как один предмет, однако AB01CDE / aB01cdE выбраны в качестве другого элемента.

Я пытался использовать REPLACE вокруг первого registration убрать пробелы при выборе уникальных предметов.

0

Решение

REPLACE() должно сработать. Ты сделал это?

SELECT DISTINCT REPLACE(registration, ' ', '') as Registration
FROM (SELECT registration
FROM installs
WHERE customer_id = :id1
UNION ALL
SELECT registration
FROM services
WHERE customer_id = :id2
SELECT registration
FROM deinstalls
WHERE customer_id = :id3
) v;

Также возможно, что разделяющие символы не являются пробелами, в этом случае это не будет работать.

1

Другие решения

Я думаю, что это может быть то, что вы ищете?

SELECT registration FROM customers WHERE customer_id in
(SELECT registration AS installs_registration FROM installs WHERE customers.customer_id = installs.id,
SELECT registration AS services_registration FROM services  WHERE customers.customer_id = services.id,
SELECT registration AS deinstalls_registration FROM deinstalls WHERE customers.customer_id = deinstalls.id)
0

У вас есть два варианта. Первое, чтобы добавить DISTINCT к первому REPLACE на registration:

SELECT DISTINCT REPLACE(registration, ' ', '') FROM (
... your UNION queries
)
AS vehicles

Второй заключается в использовании REPLACE в каждом из ваших подзапросов; UNION гарантирует, что вы получите четкие результаты:

SELECT registration FROM (
SELECT REPLACE(registration, ' ', '') AS registration
FROM installs
WHERE customer_id = :id1
UNION SELECT REPLACE(registration, ' ', '')
FROM services
WHERE customer_id = :id2
UNION SELECT REPLACE(registration, ' ', '')
FROM deinstalls
WHERE customer_id = :id3
)
AS vehicles
0
По вопросам рекламы [email protected]