2015-06-01 2 views
0

Вопрос: мне нужно считать строки, которые не в table2 по телефону, у меня есть две таблицысчетчик, где значение не в другой таблице без «-» MySQL

Описание:table1 имеет колонки телефон, table2 также имеет колонку phone. Проблема в том, что иногда столбец phone может содержать '-', и я хочу удалить его, чтобы я мог сравнивать и считать, если он не существует в table1. пример:

table1   table2 
id phone  id phone 
1 01-123  1 01123 
2 12345  2 23456 

Ожидаемый результат должен быть 1. До сих пор я писал этот запрос, но он не работает, никакой помощи?

SELECT count(*) FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE REPLACE(table1.phone, '-', '') = REPLACE(table2.telephone, '-', '')) 

ответ

1

Попробуйте это, только если table2.phone получил '-' и table1.phone не имеет, что

SELECT count(*) FROM table1 
    WHERE phone NOT IN 
     (SELECT REPLACE(phone, '-', '') from table2); 
0

100% рабочий

SELECT count(*) FROM table1 WHERE phone NOT IN(SELECT REPLACE(phone, '-', '') from table2); 
+0

100%? Что произойдет, если номер телефона в таблице 2 содержит дефис? –

+0

О, это та же самая копия моего ответа (хотя и не правильная) –

2

Вы должны попробовать NOT IN

SELECT Count(*) 
FROM table1 
WHERE phone NOT IN (SELECT Replace(telephone, '-', '') 
        FROM table2); 

See it in Action

+0

Отличная еще одна копия моего неправильного ответа –

+0

Его работа, а не копирование. Разве это не показывает исследования? – Manwal

+0

Действительно Отличная штука или исследование, когда то же самое отвечает на 7 минут раньше. Мне нравится ваш ответ специально «телефонная» часть –

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