添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
group_concat()
1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
find_in_set(str,strlist) 
相当于 in 的升级版,其中str为要查询的目标字符串, strlist为字符串的集合。
 

今天也要加油呀

先来几个SQL看看效果SELECT i.*,n.*FROM iLEFT JOIN n on FIND_IN_SET(n.id, i.n_id)GROUP BY n.id效果图:想把信息都放一行里面怎么办呢?我们就要用到group_concat函数了SELECT i.*,GROUP_CONCAT(n.id) nid,GROUP_CONCAT(n.name) nameFRO...
首先mysql更新数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以这样用in指定要更新的记录: UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values'); 这里注意 ‘other_values’ 是一个逗号(,)分隔的字符串,如:1,2,3 如果更新多条数据而且每条记录要更新的值不同,可能很多人会这样写: foreach ($values as $id => $myv
select account_id, substring_index(substring_index(a.related_shop_ids,',' ,b.help_topic_id+1),',',-1) shopid sales_hang_account a mysql.help_topic b on b.help_topic_id < (length(a.related_shop_ids) - length(replace(a.related_shop_ids,',',''))+1 select distinct(substring_index(substring_index(a.col,',',b.help_topic_id+1),',',-1)) (select group_concat(
假设两个表a,b,b中通过字段id与a表关联,a表与b表为一对多的关系。假设b表中存在一字段name,现需要查询a表中的记录,同时获取存储在b表中的name信息,按照常规查询,b表中有多少记录,则会显示多少行,如果需要只显示a表记录行数,则需要把查询name字段得到的多行记录进行合并,可以通过程序实现,但也可直接在sql层完成。 利用group_concat()方法,参数为需要合并的字段,合并的字段分隔符默认为逗号,可通过参数separator指定,该方法往往配合group by 一起使用。 select a.*,group_concat(b.name separator '
分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符 这个字段所属的表与这个字段关联的表,一定是一对多的关系 比如下面这个表结构所代表的content与tag这两个对象 代码如下: mysql> SELECT * FROM content; +—-+——+| id | tags | +—-+——+| 1 | 1,2 | | 2 | 2,3 | +—-+——+ 2 rows in set (0.01 sec) mysql> SELECT * FROM tag; +—-+——-+| id | name | +—-+——-+| 1 | php | | 2 | mysql
该文章是转载,用于记录一下。原文章出处在:https://blog.csdn.net/Knight_quan/article/details/51767827 有时为了数据库简洁,存放数据的时候,某一字段采用逗号隔开的形式进行存储。 一般情况这个字段都应该具有如下几个共性。 被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符 这个字段所属的表与这个...
数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中,实现查询的方法... 问题描述:一个表a中有个字段dept_id存放表b的主键id多个逗号隔开的),现在需要查询表a的数据 并且通过 X关联b查询所有信息,一般的关联是不行的因为一个字段里包含多个主键id 查阅资料 可以使用 find_in_set()和 locate(substr,str) 利用mysql 字符串函数 find_in_set(); SELECT * FROM users WHERE ..
mysql逗号分隔数据去另一张表关联查询: SELECT t.tname, b.* FROM w_topic t ,w_dwxxb b WHERE CONCAT(',',t.orgcode,',') LIKE CONCAT('%,',b.orgcode,',%') t表中的 t.name数据是以逗号分隔,以concat 分隔t.name 去b表中关联查询对应的数据;如果分隔符是“、”,则只需要改成以下: SELECT t.tname, b.* FROM w_topic t ,w_dwxxb b
declare @str as nvarchar(1000) declare @areanos as nvarchar(200) --这是把areanos字段赋值给@areanos变量 set @areanos='1,2,3' --将拼接的SQL脚本赋值给变量 set... -- mysql 查询逗号分隔多个id select t1.id,t1.chapter_id, t2.id,t2.name as bookVersionName, GROUP_CONCAT(t3.`name`) as chapterName, t4.id,t4.name as volumeName from co_course_pj as t1, co_book_ve ```sql SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(numbers,',',n),',',-1) AS number FROM ( SELECT id, numbers, (LENGTH(numbers) - LENGTH(REPLACE(numbers, ',', '')) + 1) AS count FROM your_table ) AS t CROSS JOIN ( SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 ) AS numbers WHERE n <= count ORDER BY id, number 上述查询语句中的your_table应该替换为你实际的表名。 执行以上查询将会得到如下结果: id number 1 1 1 2 1 3 2 4 2 5 2 6 在这个结果中,每个数字都被分开成了一行,并与原始数据中的id对应。 ### 回答2: 要将以逗号分隔的数字转为分开的一列,可以使用MySQL的字符串函数来实现。 首先,使用SUBSTRING_INDEX函数将字符串按逗号分隔,并提取出第一个数字,然后使用SUBSTRING函数将第一个数字之后的部分删除,得到第一个数字。 接着,使用SUBSTRING_INDEX函数将剩下的字符串再次按逗号分隔,并提取出第一个数字,然后再次使用SUBSTRING函数将第一个数字之后的部分删除,得到第二个数字。 重复以上步骤,直到将所有数字都分离出来为止。 示例如下: ```sql SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(numbers, ',', 1), ',', -1) AS num1, SUBSTRING_INDEX(SUBSTRING_INDEX(numbers, ',', 2), ',', -1) AS num2, SUBSTRING_INDEX(SUBSTRING_INDEX(numbers, ',', 3), ',', -1) AS num3 FROM your_table; 其中,numbers是包含以逗号分隔的数字的列名,your_table是表名。 在上述示例中,使用了三个SUBSTRING_INDEX函数来提取出三个数字,你可以根据实际情况增加或减少函数的数量。 最后,将分离出来的数字分别命名为num1、num2、num3等,并从表中选取出来。 注意,此方法适用于已知分隔符数量的情况。如果分隔符数量不确定或不固定,可能需要使用递归或自定义函数来处理。 ### 回答3: 在MySQL中,可以使用内置的字符串函数将以逗号分隔的数字转为分开的一列。 假设有一个名为numbers的表,其中有一个名为num_list的字段存储了以逗号分隔的数字。我们希望将这些数字分离出来并放到新的列中。 首先,可以使用SUBSTRING_INDEX函数获取逗号前面的子串。例如,可以使用以下查询来获取第一个数字: SELECT SUBSTRING_INDEX(num_list, ',', 1) AS num1 FROM numbers; 然后,使用SUBSTRING函数获取逗号后面的子串。例如,使用以下查询获取第二个数字: SELECT SUBSTRING(SUBSTRING_INDEX(num_list, ',', 2), LENGTH(SUBSTRING_INDEX(num_list, ',', 1)) + 2) AS num2 FROM numbers; 可以根据需要重复以上过程,获取更多的数字。 如果希望将这些数字放到新的列中,可以使用UPDATE语句。以下是一个示例: UPDATE numbers SET num1 = SUBSTRING_INDEX(num_list, ',', 1), num2 = SUBSTRING(SUBSTRING_INDEX(num_list, ',', 2), LENGTH(SUBSTRING_INDEX(num_list, ',', 1)) + 2), num3 = SUBSTRING(SUBSTRING_INDEX(num_list, ',', 3), LENGTH(SUBSTRING_INDEX(num_list, ',', 2)) + 2) numN = SUBSTRING(SUBSTRING_INDEX(num_list, ',', N), LENGTH(SUBSTRING_INDEX(num_list, ',', N-1)) + 2); 在上述示例中,num1、num2、num3等是新的列,用于存储分隔的数字。N表示总共有多少个数字需要分隔。 通过以上的方法,可以将以逗号分隔的数字转为分开的一列。请注意,这些查询和更新语句中都假设数字之间只用逗号分隔,没有额外的空格或其他字符。如果数字列表的格式与此不同,需要做适当的调整。