mysql某个字段的并集_Mysql 交集、并集、差集、行转列、列转行

1、并集: a和b所有元素的集合

-- 全连接 ====并集: a和b所有元素的集合

SELECT a.id id , a.user_name ausername, a.score ascore , b.user_name busername ,b.score bscore FROM cj a LEFT JOIN cj_copy b on a.id=b.id

UNION

SELECT a.id id , a.user_name ausername, a.score ascore , b.user_name busername ,b.score bscore FROM cj a RIGHT JOIN cj_copy b on a.id= b.id

2、交集: 属于a又属于b的所有元素构成的集合

-- 等值连接 ====交集: 属于a又属于b的所有元素构成的集合

SELECT a.id id , a.user_name ausername, a.score ascore , b.user_name busername ,b.score bscore FROM cj a INNER JOIN cj_copy b on a.id= b.id

3、差集:所有属于a且不属于b的元素构成的集合

-- 非等值连接 ====差集:所有属于a且不属于b的元素构成的集合

SELECT a.id id , a.user_name ausername, a.score ascore , b.user_name busername ,b.score bscore FROM cj a LEFT JOIN cj_copy b on a.id= b.id WHERE b.id IS NULL

4、行转列

--行转列

SELECT MAX(id),class_name,GROUP_CONCAT(user_name) from cj_copy GROUP BY class_name

5、列转行

SELECT a.id, a.user_name, a.class_name,

substring_index( substring_index(a.score,',', b.help_topic_id + 1),',' ,- 1) AS shareholder

FROM

cj_copy a

JOIN mysql.help_topic b ON b.help_topic_id

length(a.score)- length(REPLACE (a.score, ',', '')) + 1)

数据表

cj表)

SET FOREIGN_KEY_CHECKS=0;-- ----------------------------

-- Table structure forcj-- ----------------------------DROP TABLE IF EXISTS `cj`;

CREATE TABLE `cj` (

`id`int(10) NOT NULL AUTO_INCREMENT,

`user_name` varchar(10) DEFAULT NULL,

`class_name` varchar(10) DEFAULT NULL,

`score` varchar(10) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ----------------------------

--Records of cj-- ----------------------------INSERT INTO `cj` VALUES ('1', 'yang', '1', '90');

INSERT INTO `cj` VALUES ('4', 'zhou', '2', '90');

INSERT INTO `cj` VALUES ('5', 'qin', '2', '80');

cj_copy表)

SET FOREIGN_KEY_CHECKS=0;-- ----------------------------

-- Table structure forcj_copy-- ----------------------------DROP TABLE IF EXISTS `cj_copy`;

CREATE TABLE `cj_copy` (

`id`int(10) NOT NULL AUTO_INCREMENT,

`user_name` varchar(10) DEFAULT NULL,

`class_name` varchar(10) DEFAULT NULL,

`score` varchar(10) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;-- ----------------------------

--Records of cj_copy-- ----------------------------INSERT INTO `cj_copy` VALUES ('2', 'wen', '1', '80,70,60');

INSERT INTO `cj_copy` VALUES ('3', 'jie', '1', '70');

INSERT INTO `cj_copy` VALUES ('5', 'qin', '2', '80');

INSERT INTO `cj_copy` VALUES ('6', 'qin', '3', '90');

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值