表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
感谢。
答案 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
答案 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;