MYSQL分组查询

原创 2016年05月31日 18:40:38

更新用户名为4位的用户,让其已有年龄-3

UPDATE csm_user SET age=age-3 WHERE username LIKE ‘__‘;

更新前3条几率,让已有年龄+10

UPDATE smc_user SET age=age+10 LIMIT 3;

按照id降序排列,更新前3调

UPDATE smd_user SET age=age+10 ORDER BY id DESC LIMIT 3;

删除用户性别为男的用户,按照年龄降序排列, 删除1条前记录

DELETE FROM user WHERE sex=’男’ ORDER BY age DESC LIMIT 1;

查询cms_user id,username

provinces,proname

SELECT cms_user.id,username,proName FROM cms_proName,provinces;

cms_user的proid对应省份表中的id

SELECT cms_user.id,username,proName FROM cms_proName,provinces
WHERE cms_user.proid=provinces.id;

查询cms_user表中id,username,email,sex

查询provinces表中的proName

SELECT u.id,u.username,u.email,u.sex,p.proName
FROM cms_user AS u
INNER JOIN provinces AS p
ON u.proid=p.id;

查询cms_user id,lusername,sex

查询provinces proName

条件是cms_user 的性别为男的用户

根据proname分组

SELECT u.id,u.username,u.sex,p.proName,COUNT(*) AS totalusers,GROUP_CONCAT(username)
FROM cms_user AS u
INNER JOIN provinces AS p
ON u.proid=p.id
WHERE u.sex=’男’
GROUP BY p.proName;

对分组结果进行筛选,选出组中人数大于1的用户

SELECT u.id,u.username,u.sex,p.proName,COUNT(*) AS totalusers,GROUP_CONCAT(username)
FROM cms_user AS u
INNER JOIN provinces AS p
ON u.proid=p.id
WHERE u.sex=’男’
GROUP BY p.proName
HAVING COUNT(*)>=1;

按照id升序排列

SELECT u.id,u.username,u.sex,p.proName,COUNT(*) AS totalusers,GROUP_CONCAT(username)
FROM cms_user AS u
INNER JOIN provinces AS p
ON u.proid=p.id
WHERE u.sex=’男’
GROUP BY p.proName
HAVING COUNT(*)>=1
ORDER BY u.id ASC;

限制显示条数 ,前2条

SELECT u.id,u.username,u.sex,p.proName,COUNT(*) AS totalusers,GROUP_CONCAT(username)
FROM cms_user AS u
INNER JOIN provinces AS p
ON u.proid=p.id
WHERE u.sex=’男’
GROUP BY p.proName
HAVING COUNT(*)>=1
ORDER BY u.id ASC
LIMIT 0,2;

3个表的链接

SELECT u.id,p.id,a.id
FROM cms_user AS u
JOIN
cms_new AS p
ON u.id=p.id
JOIN
cms_sd AS a
ON u.id=a.id;

外连接 (左)

SELECT u.id,p.id,a.id
FROM cms_user AS u
LEFT JOIN
cms_new AS p
ON u.id=p.id
JOIN
cms_sd AS a
ON u.id=a.id;

外连接 (右)

SELECT u.id,p.id,a.id
FROM cms_user AS u
RIGHT JOIN
cms_new AS p
ON u.id=p.id
JOIN
cms_sd AS a
ON u.id=a.id;

外键的操作,在创建表的时候添加(创建父子关系) FOREIGN KEY(cms_admin) REFERENCES cms_admi(id)

删除外键

ALTER TABLE employee DROP FOREIGN KEY em_fk_dep;

添加外键

ALTER TABLE employee ADD CONSTRAINT emp_fk_dep FOREIGN KEY(depid) REFERENCES departemen(id);

删除主表,对应的子表也删除 (在创建子表中加入ON DELETE CASCADE)

更新主表,对应的子表也删除 (在创建子表中加入NO UPDATE CASCADE)

联合查询(UNION合并在一起,去掉重复)(UNION ALL合并在一起)

SELECT username FROM employee UNION SELECT username FROM cms_user;

MySql函数应用,分组排序,子查询学习笔记

一、使用计算字段与别名        SELECT CONCAT(vend_name,' (',vend_country,')') as vend_title from vendors ORDER B...
  • zlp_zky
  • zlp_zky
  • 2017年06月17日 18:03
  • 187

MySQL对数据表进行分组查询(GROUP BY)

MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组。字段中值相等的为一组。基本的语法格式如下: GROUP BY 属性名 [...

mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法

原文地址:http://blog.csdn.net/jie11447416/article/details/50887888 写博客真实个费时费力的差事,好佩服那些博客阅读几十上百万的人...
  • hblfyla
  • hblfyla
  • 2016年11月17日 13:45
  • 1699

mysql 分组查询数据时,如何获得用于分页的总记录数?

主要是想查询符合条件的记录总数, 查询数据使用的sql为: SELECT SUBSTRING_INDEX(`url`,'/',3) AS host,COUNT(*) AS count ...

【数据库-MySql】按时间间隔分组查询 group by count(*) date_format

【数据库-MySql】按时间间隔分组查询 group by count(*) date_format

Mysql 分组后排序- 查询每一个类别的前N

How to select the first/least/max row per group in SQL Thu, Dec 7, 2006 in Databases 1.problemHer...

MySQL必知必会笔记(三)SELECT语句 计算字段 数据处理函数 汇总函数 分组数据 子查询

第十章  创建计算字段     计算字段         存储在表中的数据一般不是应用程序所需要的格式。我们需要直接从数据库中检索出转换、计算或格式化的数据。而不只是检索出数据,然后再到应...
  • wdt3385
  • wdt3385
  • 2012年12月10日 16:07
  • 644

mysql查询分组显示数据结果之GROUP_CONCAT使用

mysql查询分组显示数据结果之GROUP_CONCAT使用

详解MySQL分组查询Group By实现原理(1)

由于 GROUP BY 实际上也同样会进行排序操作,而且与 ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚...

MySQL分组查询

在对数据表中数据进行统计时,可能需要按照一定的类别分别进行统计,比如,分别统计student表中,gender字段值为na、nv和NULL的学生成绩grade之和MySQL中,使用GROUP BY按某...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MYSQL分组查询
举报原因:
原因补充:

(最多只允许输入30个字)