当前位置: 首页 > news >正文

邢台市网站制作小说网站开发源码

邢台市网站制作,小说网站开发源码,在线做海报的网站,做老托福听力的网站转载自 MySQL group_concat()函数 MySQL GROUP_CONCAT函数介绍 MySQL GROUP_CONCAT()函数将组中的字符串连接成为具有各种选项的单个字符串。 下面说明了GROUP_CONCAT()函数的语法#xff1a; GROUP_CONCAT(DISTINCT expressionORDER BY expressionSEPARATOR sep);以下是…转载自  MySQL group_concat()函数 MySQL GROUP_CONCAT函数介绍 MySQL GROUP_CONCAT()函数将组中的字符串连接成为具有各种选项的单个字符串。 下面说明了GROUP_CONCAT()函数的语法 GROUP_CONCAT(DISTINCT expressionORDER BY expressionSEPARATOR sep);以下是演示GROUP_CONCAT()函数如何工作的一个示例。 USE testdb; CREATE TABLE t (v CHAR );INSERT INTO t(v) VALUES(A),(B),(C),(B);SELECT GROUP_CONCAT(DISTINCT vORDER BY v ASCSEPARATOR ;) FROMt; -- SELECT v FROM t GROUP BY v;执行上面查询语句得到以下结果 - --------------------------------------------------------------------- | GROUP_CONCAT(DISTINCT vORDER BY v ASCSEPARATOR ;) | --------------------------------------------------------------------- | A;B;C | --------------------------------------------------------------------- 1 row in set注上面语句类似于把SELECT v FROM t GROUP BY v;语句的结果串接起来。 参考以下图解 DISTINCT子句用于在连接分组之前消除组中的重复值。 ORDER BY子句允许您在连接之前按升序或降序排序值。 默认情况下它按升序排序值。 如果要按降序对值进行排序则需要明确指定DESC选项。 SEPARATOR指定在组中的值之间插入的文字值。如果不指定分隔符则GROUP_CONCAT函数使用逗号()作为默认分隔符。 GROUP_CONCAT函数忽略NULL值如果找不到匹配的行或者所有参数都为NULL值则返回NULL。 GROUP_CONCAT函数返回二进制或非二进制字符串这取决于参数。 默认情况下返回字符串的最大长度为1024。如果您需要更多的长度可以通过在SESSION或GLOBAL级别设置group_concat_max_len系统变量来扩展最大长度。 MySQL GROUP_CONCAT示例 让我们来看看示例数据库(yiibaidb)中的customers表其表结构如下所示 - mysql desc customers; ------------------------------------------------------------------ | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------------ | customerNumber | int(11) | NO | PRI | NULL | | | customerName | varchar(50) | NO | | NULL | | | contactLastName | varchar(50) | NO | | NULL | | | contactFirstName | varchar(50) | NO | | NULL | | | phone | varchar(50) | NO | | NULL | | | addressLine1 | varchar(50) | NO | | NULL | | | addressLine2 | varchar(50) | YES | | NULL | | | city | varchar(50) | NO | | NULL | | | state | varchar(50) | YES | | NULL | | | postalCode | varchar(15) | YES | | NULL | | | country | varchar(50) | NO | | NULL | | | salesRepEmployeeNumber | int(11) | YES | MUL | NULL | | | creditLimit | decimal(10,2) | YES | | NULL | | ------------------------------------------------------------------ 13 rows in set要获取客户所在的国家/地区以逗号分隔的字符串您可以使用GROUP_CONCAT函数如下所示 SELECT GROUP_CONCAT(country) FROMcustomers;SQL 执行上面查询语句得到以下结果 - 然而一些客户位于同一个国家。要删除重复的国家/地区名称请将DISTINCT子句添加到函数如下查询 mysql SELECT GROUP_CONCAT(DISTINCT country) FROMcustomers; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | GROUP_CONCAT(DISTINCT country) | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | France,USA,Australia,Norway,Poland,Germany,Spain,Sweden,Denmark,Singapore,Portugal,Japan,Finland,UK,Ireland,Canada,Hong Kong,Italy,Switzerland,Netherlands,Belgium,New Zealand,South Africa,Austria,Philippines,Russia,Israel | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 row in set如果国家的名称按升序排列则可读性更高。要在连接之前排序国家的名称请使用ORDER BY子句如下 SELECT GROUP_CONCAT(DISTINCT countryORDER BY country) FROMcustomers;执行上面查询语句得到以下结果 - mysql SELECT GROUP_CONCAT(DISTINCT countryORDER BY country) FROMcustomers; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | GROUP_CONCAT(DISTINCT countryORDER BY country) | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Australia,Austria,Belgium,Canada,Denmark,Finland,France,Germany,Hong Kong,Ireland,Israel,Italy,Japan,Netherlands,New Zealand,Norway,Philippines,Poland,Portugal,Russia,Singapore,South Africa,Spain,Sweden,Switzerland,UK,USA | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 row in set要将返回的字符串的默认分隔符从逗号()更改为分号(;)请使用SEPARATOR子句作为以下查询 SELECT GROUP_CONCAT(DISTINCT countryORDER BY countrySEPARATOR ;) FROMcustomers;执行上面查询语句得到以下结果  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | GROUP_CONCAT(DISTINCT countryORDER BY countrySEPARATOR ;) | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Australia;Austria;Belgium;Canada;Denmark;Finland;France;Germany;Hong Kong;Ireland;Israel;Italy;Japan;Netherlands;New Zealand;Norway;Philippines;Poland;Portugal;Russia;Singapore;South Africa;Spain;Sweden;Switzerland;UK;USA | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 row in set经过上面几个简单示例现在您应该知道GROUP_CONCAT函数是如何工作现在把它应用在一个实际的例子中。 每个客户都有一个或多个销售代表。 换句话说每个销售人员都负责一个或多个客户。 要了解谁负责哪些客户使用inner join子句如下 SELECT employeeNumber, firstname, lastname, customername FROMemployeesINNER JOINcustomers ON customers.salesRepEmployeeNumber employees.employeeNumber ORDER BY firstname , lastname;执行上面查询语句得到以下结果 - -------------------------------------------------------------------------- | employeeNumber | firstname | lastname | customername | -------------------------------------------------------------------------- | 1611 | Andy | Fixter | Souveniers And Things Co. | | 1611 | Andy | Fixter | Australian Collectables, Ltd | | 1611 | Andy | Fixter | Australian Gift Network, Co | | 1611 | Andy | Fixter | Australian Collectors, Co. | | 1611 | Andy | Fixter | Annas Decorations, Ltd | | 1504 | Barry | Jones | Baane Mini Imports | | 1504 | Barry | Jones | Toms Spezialitten, Ltd | ************* 此处省略了一大波数据 ********************************************* | 1216 | Steve | Patterson | Auto-Moto Classics Inc. | | 1216 | Steve | Patterson | Gifts4AllAges.com | | 1216 | Steve | Patterson | FunGiftIdeas.com | | 1216 | Steve | Patterson | Diecast Classics Inc. | | 1216 | Steve | Patterson | Online Diecast Creations Co. | -------------------------------------------------------------------------- 122 rows in set现在我们可以按员工编号对结果集进行分组并使用GROUP_CONCAT函数连接正在负责员工的所有员工如下所示 SELECT employeeNumber,firstName,lastName,GROUP_CONCAT(DISTINCT customernameORDER BY customerName) FROMemployeesINNER JOINcustomers ON customers.salesRepEmployeeNumber employeeNumber GROUP BY employeeNumber ORDER BY firstName , lastname;上面查询语句执行结果如下 - 如下所示的结果更容易阅读。 具有CONCAT_WS函数的MySQL GROUP_CONCAT函数的示例 有时GROUP_CONCAT函数可以与CONCAT_WS函数相结合使查询结果更有用。 例如制作客户分号分隔值列表 首先使用CONCAT_WS函数连接每个客户联系人的姓氏和名字结果是联系人的全名。然后使用GROUP_CONCAT函数来创建列表。 以下查询使客户的分号分隔值列表。 SELECT GROUP_CONCAT(CONCAT_WS(, , contactLastName, contactFirstName)SEPARATOR ;) FROMcustomers;请注意GROUP_CONCAT函数将字符串值连接在不同的行中而CONCAT_WS或CONCAT函数将不同列中的两个或多个字符串值连接起来。 MySQL GROUP_CONCAT函数常见错误 GROUP_CONCAT函数返回单个字符串而不是值列表。 这意味着您不能在IN操作符中使用GROUP_CONCAT函数的结果例如在子查询中使用。 例如GROUP_CONCAT函数返回值的结果1, 2和3连接成为字符串1,2,3 。 如果将此结果提供给IN运算符则查询不能正常工作。因此查询可能不返回任何结果。例如以下查询将无法正常工作。 因为IN运算符接受诸如(1,2,3)的值的列表而不是由值列表(1,2,3)组成的字符串。 因此以下查询将无法正常工作。 SELECT id, name FROMtable_name WHEREid IN GROUP_CONCAT(id);因为GROUP_CONCAT函数是一个聚合函数要对值进行排序必须在函数内使用ORDER BY子句而不是SELECT语句中的ORDER BY。 以下示例演示了在使用GROUP_CONCAT函数的上下文中ORDER BY子句的不正确使用 SELECT GROUP_CONCAT(DISTINCT countrySEPARATOR ;) FROMcustomers ORDER BY country;SELECT子句返回一个字符串值因此ORDER BY子句在此语句中不起作用。 MySQL GROUP_CONCAT应用程序 在许多情况下您可以应用GROUP_CONCAT函数来产生有用的结果。 以下列表是使用GROUP_CONCAT函数的一些常见示例。 用逗号分隔的用户角色如“管理员作者编辑人员”。生成逗号分隔的用户的爱好如“设计编程阅读”。为博客帖子文章或产品创建标签例如“mysqlmysql聚合函数mysql教程”。 在本教程中我们介绍了MySQL GROUP_CONCAT函数将非空值从一组字符串连接到具有各种选项的字符串中。 参考 MySQL GROUP_CONCAT函数 :http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat
http://www.yutouwan.com/news/334278/

相关文章:

  • 泰州网站建设报价中小企业 网站建设
  • 端口扫描站长工具php做简单网站例子
  • perl php 网站开发音乐接单推广app平台
  • 家居网站建设公司网站开发计划书封面设计
  • 王店镇建设中心小学网站四川企业宣传片制作公司
  • 旅游营销型网站建设营销型网站建
  • 手机企业网站模板山东淄博微信网站制作
  • 建站公司成功案例app开发软件价格
  • 建设网站难吗服务器建网站教程
  • wordpress资源站专门做艺术字的网站
  • 贵溪市城乡建设局网站WordPress不支持
  • 网页设计与网站建设中的热点是什么人被备案了会有什么后果
  • 站群seo技巧模板网站建站哪家好
  • 网站备案 更名建设个人网站的参考网站及文献
  • 企业网站的建设过程ui设计培训学校哪里好
  • 友谊路街道网站建设群晖 套件 wordpress
  • 建设部网站一级开发资质wordpress文章摘要
  • 网上有哪些购物网站软件开发工具的基本功能是什么
  • 新洲城乡建设局网站顺德营销型网站
  • 福田附近网站开发公司动漫在线制作网站
  • 建设网站的一般过程网站备份信息
  • 做ppt常用的网站有哪些重庆奉节网站建设
  • 镇江网站建设优化案例分析广州的服装网站建设
  • 长沙有什么做试卷的网站渐江建工水利水电建设有限公司网站
  • 免费的黄冈网站有哪些学习前端的网站
  • 怎么做外贸个人网站dede网站 设置404 错误页面
  • 行政单位建设网站方案网络培训课堂app
  • 杭州市萧山区建设局网站深圳网站建设公司招聘
  • 网站做付款页面百度竞价排名规则及费用
  • 专门做母婴的网站杭州十大广告公司