1.根据城市统计各省人数
SELECT province,SUM ( population ) as population from
(SELECT
CASE
WHEN area IN ( '石家庄', '邯郸', '秦皇岛' ) THEN '河北'
WHEN area IN ( '郑州', '安阳' ) THEN '河南'
ELSE '其他' END as province , population
FROM people ) peoplesum
GROUP BY province
2.行转列
SELECT
username,
SUM ( CASE subject WHEN '语文' THEN fraction ELSE 0 END ) AS yuwen,
SUM ( CASE subject WHEN '数学' THEN fraction ELSE 0 END ) AS shuxue,
SUM ( CASE subject WHEN '英语' THEN fraction ELSE 0 END ) AS yingyu
FROM
study
GROUP BY
username
3、条件更新
update salaries set salary = CASE WHEN salary >= 100000 THEN salary*0.8
WHEN salary >= 50000 AND salary < 100000 THEN salary*0.9
WHEN salary >= 10000 AND salary < 50000 THEN salary*0.95
ELSE salary END;
关联更新
update 表1, 表2 set 表1.dept_name = d表2.dept_name
where 表1.dept_id = 表2.dept_id;
4.sql 批量插入
在有自增长的SQL表格里面插入指定ID的数据的时候,会禁止你操作,提示如题目,解决办法:
set identity_insert sys_role_cpy1 on
INSERT INTO sys_role_cpy1(role_id, role_name) select role_id,role_name from sys_role_cpy1_copy1
set identity_insert sys_role_cpy1 off
5.行转列拼接到一个字段 GROUP_CONCAT
SELECT
NAME,
REPLACE ( GROUP_CONCAT( DISTINCT num ORDER BY num ASC ), ',', '、' ) AS newnum
FROM
demo
GROUP BY
NAME
6.Msql查看表元数据
SELECT
column_name columnName,
data_type dataType,
column_comment columnComment,
column_key columnKey,
extra
FROM
information_schema.COLUMNS
WHERE
table_name = 'aaa'
AND table_schema = (
SELECT DATABASE
()
)
ORDER BY
ordinal_position
查看数据库所有表名
select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables where table_schema = (select database())