首页
学习
活动
专区
圈层
工具
发布

MySQL字段拼接的三个函数

MySQL中如果对字段有拼接需求,可以利用原生提供的三个函数,功能虽然相近,但细节略有不同,针对不同的场景,选择不同的方案, concat() concat_ws() group_concat() 1....concat()函数 可以实现多个字段使用空字符串拼接为一个字段,如下所示, mysql> select concat(id, type) from mm_content limit 10; +---...GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 但是group_concat()函数可以将分组状态下的其他字段拼接成字符串查询...                                       | +---------------------------------------------------+ 2 rows in set (0.00 sec) 如果想要拼接多个字段...,默认是用空字符串进行拼接的,我们可以利用concat_ws()方法嵌套一层, mysql> select group_concat(concat_ws(',', id, name) separator

4.2K20

SELECT * 和 SELECT 全部字段

在 MySQL 查询中,SELECT * 和 SELECT 全部字段 的两种写法有不同的优缺点,以及 HAVING 子句和 WHERE 子句在查询中的异同点。...一、SELECT * 和 SELECT 全部字段 的优缺点 SELECT * 的写法 SELECT * 表示选择表中的所有字段。...在查询时,如果使用 SELECT *,MySQL 会自动列出表中所有的字段,无论这些字段是否被查询条件所限制。...首先,它可能导致查询性能下降,因为 MySQL 需要扫描整个表,而无论哪些字段被查询条件所限制。其次,如果表中的字段非常多,使用 SELECT * 可能会导致查询结果非常庞大,增加网络传输的开销。...本文详细分析了 MySQL 查询中 SELECT * 和 SELECT 全部字段 的优缺点,以及 HAVING 子句和 WHERE 子句在查询中的异同点。

5.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    select * 和 select 所有字段的区别

    之前发过的文章中,关于 select * 和 select 所有字段的知识,有描述不恰当,这次重新纠正下,加深下理解。...MySQL 5.1.37 表记录数 41,547,002,即 4000+w 行。...所以查询所有字段(或者大多数字段)的时候,大可 select * 来操作。如果某些不需要的字段数据量特别大,还是写清楚字段比较好,因为这样可以减少网络传输。 (1)减少数据的负担。...(3)索引问题 select abc from table; 和 select * from table; 在 abc 字段有索引的情况下,mysql 是可以不用读 data,直接使用 index 里面的值就返回结果的...往期精彩回顾 程序员接私活的7大平台利器 select count(*) 底层究竟做了什么? 删库后,除了跑路还能怎么办? MySQL索引优化看这篇文章就够了!

    3.9K20

    MySQL根据某个字段将多条记录的某个字段拼接成一个字段

    问题 GROUP_CONCAT函数用于将多个字符串连接成一个字符串,在拼接成字符串时就会存在拼接长度的问题,MySQL 默认的拼接最大长度为1024 个字节,由于1024个字节会出现不够用的情况,所以有时需要去根据情况进行修改..., 使用SHOW VARIABLES LIKE "%group_concat_max_len%"查看 mysql> SHOW VARIABLES LIKE "%group_concat_max_len%...> 1 临时修改(命令行) 1.1 修改group_concat_max_len长度为:10240 mysql> SET GLOBAL group_concat_max_len = 10240; mysql...> SET SESSION group_concat_max_len = 10240; 1.2 查看 mysql> SHOW VARIABLES LIKE "%group_concat_max_len%...[mysqld] ...... group_concat_max_len = 10240  #添加 2.2 重启mysql服务 如果mysql服务不重启的话,可以配合临时修改一起使用 $ service

    3.1K20

    select * 与 select id 字段 条件相同 数据结果不同(二)

    承接上一篇文章 继续分析 reason select * expalin一下 ? select id expalin一下 ?...这个排序区是每个Thread 独享的,可能同一时刻在MySQL 中存在多个 sort buffer 内存区域。...MySQL中filesort 的实现算法有两种: 1.双路排序:首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sort buffer 中进行排序。...MySQL主要通过比较所设定的系统参数 max_length_for_sort_data的大小和Query 语句所取出的字段类型大小总和来判定需要使用哪一种排序算法。...所以,select * 的大小明显多一些,所以,使用了第二种优化后的算法。而仅select id数据大小比较小,故采用第一种。

    2K40

    “禁止用 select * 作为查询字段列表”落地指南

    一、背景 《阿里巴巴 Java 开发手册》 MySQL 数据库部分,ORM 映射部分,谈到: 【强制】 在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。...甚至有些公司还会对代码进行扫描,当发现代码或者 MyBatis 配置中出现 select * 时会给出告警要求修改。 规范中将这么规定的原因给出了解释,但是落地时又会遇到一些抉择。...反例: UserDO getEmailById(Long id); 对应 xml 语句 select id="getEmailById" parameterType="java.lang.Long"...resultMap="resultMap"> SELECT * FROM user WHERE id = #{id} select> ---- 正例: String getEmailById(Long..."> SELECT email FROM user WHERE id = #{id} select> 正如手册上所说的,这种写法带来的好处是: 1)增加查询分析器解析成本。

    1.4K10
    领券