mysql样才能对单列去重,例如我需要对查询不同部门的不同职业有哪些
这样不就可以了么
SELECT DISTINCT 部门 , 职业
FROM table;
要对MySQL表中的单列进行去重,你可以使用DISTINCT
关键字来实现。在你的例子中,如果你需要查询不同部门的不同职业有哪些,可以使用以下SQL查询语句:
SELECT DISTINCT department, occupation
FROM your_table_name;
在这个查询中,your_table_name
是你要查询的表名,department
和occupation
是表中的两列,分别表示部门和职业。DISTINCT
关键字将返回不重复的部门和职业组合,去除重复的行。
请替换your_table_name
为你实际的表名,并根据表的结构和列名调整查询语句。执行这个查询后,你将得到不同部门的不同职业的列表。
环境说明
主Mysql(localhost_3306):
ip:192.168.1.120
端口:3306
账号:root
密码:123456
同步数据库名称:test
从MySQL(192.168.1.150_3306):
ip:192.168.1.150
端口:3306
账号:root
密码:123456
同步数据库名称:test
现在主库和从库中创建好test数据库
首先配置主库
1、主数据库配置文件(主数据库在windows系统上)如下
在windows上为my.ini文件,寻找方法 打开c盘,输入%ProgramData%并回车,找到mysql安装目录点击去即可找到打开做如下配置
[mysqld]
#设置主从复制(主)
server-id=114 #一般为ip后三位
log-bin=mysql-bin #表示启用binlog功能,并指定二进制日志的存储目录
binlog-do-db=test #binlog日志记录指定库的更新
port=3306
2、重启mysql,可在cmd中输入services.msc打开服务,找到mysql右键重启
3、打开navicat进入主库点击用户,新建用户,输入用户信息
注意主机那里输入的是从库的ip!!!!!!!!!(都是我踩过的坑)
4、点击权限选择对应权限并保存
5、重启主库查看主库信息
记录File列信息 和Position下数字,后面会用
从数据库配置文件(从数据库在linux系统上)
1、linux系统上配置文件为my.cnf 在/etc/my.cnf
[mysqld]
server_id=150
log_bin=mysql-bin
#要进行主从复制的数据库名
replicate-do-db=test
#要进行主从复制的表名,%表是通配符
replicate-wild-do-table=test.%
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
注意这里有一个大坑!! 配置的时候一定要配置/etc/my.cnf 也就是mysql启动是加载的配置文件,不要配置/usr/local/mysql 即你的mysql安装目录下的!! 如过配置的安装目录下的结果就是从数据库只同步主数据库的表结构,不会同步表中的数据!! 这个坑我用了一天的时间才爬出来
2、重启数据库
使用service mysqld restart
3、同步配置
stop slave;
change master to master_host='192.168.1.120', #主库的ip
master_port=3306, #主库的端口
master_user='slave', #刚在主库创建的用户
master_password='123456', #创建用户时输入的密码
master_log_file='mysql-bin.000022', #让记录的File信息
master_log_pos=2324; #让记录的Position信息
start slave;
4、查看同步状态
执行 show slave status
结果红圈内时双yes即可
验证结果
在主库test中创建表user保存后,刷新从库会看到从库test中出现user表,在主库user表中添加数据后刷新从库会看到user表中数据更新!
问题内容: 请问在MySQL中,我该如何查询不同部门的不同职业?也就是说,我想要获取每个部门中有哪些不同的职业存在。请给出相应的MySQL语句。
解决方案: 首先,根据题目,我们需要查询不同部门的不同职业,因此我们需要使用GROUP BY子句来按部门进行分组,并计算每个部门的不同职业。具体的MySQL语句如下:
SELECT department, COUNT(DISTINCT occupation) as distinct_occupations
FROM table_name
GROUP BY department;
其中,table_name
是你的数据库中包含职业和部门信息的表的名称。department
和occupation
分别是表中包含部门和职业信息的列的名称。以上语句将返回每个部门中不同职业的数量。
请替换table_name
,department
和occupation
为你实际的表和列名称,并在执行查询前连接到你的MySQL数据库。
希望以上解决方案对你有帮助。如果你需要更多帮助,请告诉我。