MySQL单表查询练习题 按照药品类别编号(gtid)进行分类汇总,计算不同分类下各有多少种药品信息
时间: 2023-06-19 11:09:21 浏览: 62
假设我们有一个药品信息表 drug_info,包括以下字段:
- id:药品编号
- name:药品名称
- gtid:药品类别编号
则可以通过以下 SQL 语句按照 gtid 进行分类汇总,并计算不同分类下各有多少种药品信息:
```
SELECT gtid, COUNT(DISTINCT id) AS num_drugs
FROM drug_info
GROUP BY gtid;
```
其中,COUNT(DISTINCT id) 统计每个 gtid 分类下不同的药品编号数量,AS num_drugs 则给统计结果命名为 num_drugs,以便后续查询。GROUP BY gtid 按照 gtid 进行分组,最终得到每个 gtid 分类下不同药品信息数量的统计结果。
相关问题
mysql 查询gtid
要查询 MySQL 的 GTID,可以使用以下命令:
```
SHOW GLOBAL VARIABLES LIKE 'gtid_mode';
SHOW MASTER STATUS;
```
第一个命令用于查看 GTID 模式,如果输出结果为 ON,则表示 GTID 已启用。
第二个命令用于查看当前主节点的 GTID 信息,包括当前的 GTID,以及下一个要写入 binlog 的 GTID。如果输出结果为空,则表示该节点没有启用 GTID。
mysql GTID
MySQL GTID(全局事务标识)是一种用于实现主从复制的机制,在MySQL 5.6及以上版本中引入。GTID用于确保在主库上执行的每个事务都在从库上正确地执行,以保持数据的一致性。
GTID由全局唯一的标识符组成,每个标识符表示一个唯一的事务。GTID由两个部分组成:GTID域和GTID序列号。GTID域表示具体的主库,而GTID序列号表示在该主库上执行的事务的顺序。
引用提到了GTID不能跳过报错的问题,因为GTID是保证事务一致性的机制,不支持跳过报错的方式。
引用提到了在备库上未开启binlog时,GTID会被直接持久化到mysql.gtid_executed表中。这个表记录了已经被执行的事务的GTID。在MySQL 5.7中,向mysql.gtid_executed表插入GTID的操作与DML操作是原子性的,对于DDL操作则不是。而在MySQL 8.0中,DDL操作的GTID插入也是原子性的。
引用提到了binlog中写GTID的event被称作Gtid_log_event。当binlog切换或者MySQL服务关闭时,之前binlog中的所有GTID都会被加入mysql.gtid_executed表中。这个表中记录了主库和从库之间的GTID信息。
综上所述,MySQL GTID是一种用于实现主从复制的机制,它通过全局唯一的标识符来确保在主库上执行的每个事务都在从库上正确地执行。GTID的持久化方式和原子性在不同的MySQL版本中有所差异。