MySQL连接列与空白

时间:2016-05-17 14:03:33

标签: mysql sql shell join

表a:

phone_number
+123456789000_
+123456789001
+123456789002_
+123456789003
+123456789000

某些电话号码末尾的_代表一个空格

表b:

phone_number
+123456789000
+123456789002

表b包含表a中有空格的phone_numbers。修剪了空白区域。

我需要检查手机是否未在桌面a上添加两次(一个带有空格字符且没有空格字符)。

我试过了:

SELECT a.phone_number FROM a
JOIN b ON a.phone_number = b.phone_number;

但它会返回b中所有现有的电话号码。我想从上面的例子得到的是+123456789000

感谢。

2 个答案:

答案 0 :(得分:3)

你应该做一个自我加入:

SELECT t1.phone_number 
FROM a AS t1
JOIN a AS t2 ON t1.phone_number = CONCAT(t2.phone_number, '_');

修改

上一个查询在a表中查找下划线字符。要根据尾随空格字符检测重复的电话号码,您可以改为使用此查询:

SELECT phone_number
FROM a 
GROUP BY RTRIM(phone_number)
HAVING COUNT(*) > 1

Demo here

答案 1 :(得分:1)

您可以在加入时使用trim function删除空格。

SELECT b.phone_number, count(*) as cnt
FROM b
JOIN a ON TRIM(a.phone_number) = b.phone_number
GROUP BY b.phone_number
HAVING cnt > 1;