MySQL多个字段合并简单实用的方法mysql不同字段合并

说白了,MySQL其实很容易合并多个字段。
我们先来说说最重要的事情。
您可以直接使用 CONCAT() 函数,该函数可以将多个字符串组合在一起。
例如,在我们去年运行的项目中,我们使用 CONCAT(last_name, ' ', first_name) AS full_name 方法将员工的名字和姓氏组合成全名。
对于3 000级左右的数据量,效果非常好。

还有一点,如果你想更灵活地控制选择器,CONCAT_WS()函数是一个不错的选择。
允许您选择特定的,这有利于数据处理。
例如,一个重要的细节是您可以使用 CONCAT_WS(',', Country, city, postal_code) 用逗号分隔国家/地区、城市和邮政编码。

一开始我以为CONCAT()和CONCAT_WS()有很大的区别,后来发现是错误的。
其实两者都相当实用,只是用途有些不同。
等等,另一件事是,当你看到有人使用“+”运算符时,它的用法实际上与 CONCAT() 类似,但它更简洁。

所以,我的建议是,下次需要合并字段时,也可以尝试 CONCAT() 或 CONCAT_WS()。
没有多少人注意到这一点,但我认为值得一试。
请记住在 SELECT 语句中使用 AS 关键字来创建新字段名称。
这不仅提高了代码的可读性,而且使维护变得更加容易。

MySQL多个字段取并集轻松实现数据筛选和合并mysql不同字段取并集

说实话,刚接触MySQL的时候,我对UNION还是挺害怕的。
特别是如果您需要执行多个字段的联合,仅查看官方文档的冰冷语法就会令人困惑。
但后来做了一个项目,碰巧遇到这个场景,敲了几下,突然就有了想法。

就拿我之前负责的一个电商项目来说吧。
当时后端要统计整个平台(包括主网站和几个小应用)的活跃用户,但是用户表结构不一样。
主网站用户表有一个uid字段,小程序用户表叫user_id,增加了一个platform字段。
直接使用UNION肯定是不行的,因为列名不统一。
我正在考虑将表中的 uid 和 user_id 转换为一个名为 id 的字段,然后将它们合并在一起。
SQL是这样写的:
sql SELECT id、昵称 AS 名称、register_date AS 年龄 来自 main_platform_users 联盟 SELECT id、昵称 AS 名称、register_date AS 年龄 来自迷你程序用户 WHERE 平台 = 'wx'
这里我偷偷改了年龄字段,因为两个表中年龄字段原来的名字不一样。
运行完这行SQL后,我突然发现结果中所有的用户都被合并了,而且他们的昵称和注册时间也排列得很整齐。
最重要的是,重复用户只出现一次——例如,用户同时登录主网站和小部件,但搜索结果中只出现一项。
这就是UNION的自动去重功能,当时让我很高兴。

但后来我踩到了陷阱。
需要统计所有平台上的用户,包括重叠的用户。
如果使用UNION,同时登录主站和小部件的用户只会被统计一次。
但业务上说要算两次,所以必须使用UNION ALL。
我记得当我更改SQL时,我的手在颤抖,我输入了UNION。
结果业务端的数据不符,我急得满头大汗。
这提醒我记住,在使用UNION ALL之前,需要确认业务需求是否是保留重复数据。

在技能方面,我有一些经验。
如果两个表的字段类型不同,比如一个表的age是INT,另一个是DATE,直接UNION会报错。
此时,可以先使用CAST函数将其转换为统一类型,例如:
sql 选择 id、姓名、CAST(register_date AS UNSIGNED) AS 年龄 从表 1 联盟 选择 ID、姓名、CAST(出生日期 AS UNSIGNED)AS 年龄 从表 2
使用 UNSIGNED 类型将日期转换为数字,以便可以将它们组合起来。
但要注意,DATE 转换为 UNSIGNED 后,就会变成时间戳。
如果日期太早,价值就会很小。
这取决于具体情况。

还有一个性能问题。
我曾经有一个项目表,数据量非常大,几千万条。
刚开始写UNION的时候直接查了一下,就这么固定了,惨死了。
后来数据库师傅教我,如果一个表很大,另一个表很小,可以先UNION小表,再UNION大表,或者用临时表先存放小表的结果,再UNION。
还有索引。
如果UNION字段有索引的话,查询速度会快很多。
我记得那个项目中改变索引后,查询时间从几分钟变成了几十秒。
这就像换一台机器一样。

最后,个人建议。
不要让 UNION 太复杂。
我见过人们在几十张表上写 UNION 。
SQL看起来就像面条一样,最终出现问题时却找不到原因。
我习惯将 UNION 分成几个小步骤并单独测试每个步骤。
例如,先合并两个表,验证没有问题,然后合并第三个表。
这将使查找错误变得更加容易。

我就停在这里。
不管怎样,多练习就会习惯的。
说到数据合并,UNION确实是一个强大的工具,但是如果使用不当,它很容易成为链接。

MySQL中组合字段之concat()

这是一个危险,CONCAT()函数不能用于算术计算,不要这样做。