MySQL 用空格连接列

标签 mysql sql shell join

表一:

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

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

表b:

phone_number
+123456789000
+123456789002

表 b 包含表 a 中有空格的电话号码。空白区域被修剪。

我需要检查电话是否没有在表a中添加两次(一次有空格字符和没有空格字符)。

我试过:

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

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

谢谢。

最佳答案

你应该做一个自连接:

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

关于MySQL 用空格连接列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278414/

相关文章:

php - 从数据库加载完整的 ID 列表或一次执行一条记录?什么是最好的?

mysql - SELECT COLUMN_NAMES 是其他表中的值 (mysql)

sql - 是否可以在 unnest 中使用 array_agg 结果? |数据库

linux - 导出新变量时如何组合变量名?

Bash 变量范围泄漏

mysql - 多个replace语句的SQL?

mysql - 找到聚合的最高值并将其存储在新列中

sql-server - SQL 子查询还是 INNER-JOIN?

sql - 两个不同的选择进入同一个临时表

linux - bash 中的备份脚本