1:在某个字段后面增加一个字段
ALTER TABLE 表名 ADD COLUMN 字段名 字段类型 DEFAULT NULL COMMENT '字段注释' AFTER 字段B名(在这个字段后面插入);
2:根据查询结果的某个字段值,按指定分隔符分割成多行
select a.字段A,
substring_index(substring_index(a.字段A, ',', b.help_topic_id + 1), ',', -1) as course
from 表A a JOIN mysql.help_topic b
ON b.help_topic_id < (length(a.字段A) - length(REPLACE(a.字段A, ',', '')) + 1);

3: 查询多个字段值,但想根据其中一个字段进行去重,其他字段不参与去重
SELECT C.* FROM(
SELECT M.* FROM(
SELECT 1 AS id, '张三' AS namex
UNION ALL
SELECT 2 AS id, '李四' AS namex
UNION ALL
SELECT 3 AS id, '张三2' AS namex
UNION ALL
SELECT 4 AS id, '张三' AS namex
UNION ALL
SELECT 5 AS id, '王五' AS namex
) M
-- 排序一下要去重的字段
ORDER BY M.namex ASC
) C
LEFT JOIN (SELECT @namex := NULL) Z ON 1 = 1
WHERE (CASE WHEN @namex IS NULL OR @namex <> C.namex THEN @namex := C.namex END) IS NOT NULL

4: 查询行号
select a.value, (@rowNum:=@rowNum+1) as rowNo
from (
SELECT 'value1' AS value
UNION ALL
SELECT 'value2' AS value
UNION ALL
SELECT 'value3' AS value
UNION ALL
SELECT 'value4' AS value
UNION ALL
SELECT 'value5' AS value
) a
LEFT JOIN (select (@rowNum :=0)) b ON 1 = 1

5: 查询更新(更新的值来源于其他表的查询结果)
-- 切记查询出来的数据行数最好与要更新的记录行数保持一致,要更新一条记录,那查询就是查询一条记录
-- 更新两条,就查询两条,不然容易出问题
UPDATE 表A L
INNER JOIN(SELECT 表B字段 FROM 表B L2) L2 ON 表A与表B的关联条件
SET L.字段A = L2.字段A, L.字段B = L2.字段B
6:多行合并成一行
-- 如果不加SEPARATOR '|',默认为英文逗号分隔
select group_concat(a.value SEPARATOR '|')
from (
SELECT 'value1' AS value
UNION ALL
SELECT 'value2' AS value
UNION ALL
SELECT 'value3' AS value
UNION ALL
SELECT 'value4' AS value
UNION ALL
SELECT 'value5' AS value
) a

7:获取中文首字母
Select '张三' ,
ELT(INTERVAL(CONV(HEX(left(CONVERT('张三' USING gbk),1)),16,10),
0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,
0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,
0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),
'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P',
'Q','R','S','T','W','X','Y','Z') as PY

8:树形函数,根据上级ID获取此上级下所有的下级(包括自己)
CREATE FUNCTION get_tree_child(PARENT_ID VARCHAR(32)) RETURNS varchar(4000) CHARSET utf8
BEGIN
DECLARE STEMP VARCHAR(4000);
DECLARE STEMPCHD VARCHAR(4000);
SET STEMP = '';
SET STEMPCHD = CAST(PARENT_ID AS CHAR);
WHILE STEMPCHD IS NOT NULL DO
IF STEMP!='' THEN
SET STEMP = CONCAT(STEMP,',',STEMPCHD);
ELSE
SET STEMP = CONCAT('',STEMPCHD);
END IF;
SELECT GROUP_CONCAT(c.ID) INTO STEMPCHD
FROM mal_catagory AS c WHERE FIND_IN_SET(c.PARENT_ID, STEMPCHD)>0;
END WHILE;
RETURN STEMP;
END
-- 使用函数
SELECT * FROM 表名 WHERE FIND_IN_SET(id, get_tree_child('00000003')) > 0
9:MySQL8 树形查询
with recursive tab1(不一定非的是tab1,自己定)(字段A, 字段B....(查询结果字段,不能用*,下面查出几个字段,这里就得定义几个字段)) AS (
-- 父节点查询
SELECT 字段A,字段B...
FROM 表A t0
WHERE 父节点过滤条件
union all
-- 子节点查询
SELECT 字段A,字段B...
FROM 表A t1, tab1 t2
WHERE 子节点与父节点关联条件,以及其他条件
)
SELECT t3.* FROM tab1 t3;
示例: 创表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `perm_resource`;
CREATE TABLE `perm_resource` (
`resource_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '资源ID',
`resource_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源名称',
`resource_parent_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '父节点ID',
`is_enable` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否启用',
`order_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '排序ID',
`resource_path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源路径',
`menu_level` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜单级别',
`belong_systems` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属系统',
`is_del` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否可删除',
`resource_type` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '资源类型(COMM_CODE_ZYLX)',
`button_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '功能菜单ID',
`menu_path` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '树结构路径',
`login_flag` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否需要登录标志',
`login_page` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '登录页面',
`color` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '按钮背景颜色',
`icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '图标资源',
PRIMARY KEY (`resource_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '资源' ROW_FORMAT = Dynamic;
INSERT INTO `perm_resource` VALUES ('011', '社会保险(个人)', '1', '1', '1', NULL, '2', '1', '1', NULL, NULL, '.1.011.', '1', NULL, NULL, NULL);
INSERT INTO `perm_resource` VALUES ('01101', '个人中心', '011', '1', '10', NULL, '3', '1', '1', '1', NULL, '.1.011.01101.', '1', '1', NULL, NULL);
INSERT INTO `perm_resource` VALUES ('0110102', '待遇资格', '01101', '1', '2', '/aio/view/neuqsoft/handan/yl/facecompare.jsp', '4', '1', '1', '1', NULL, '.1.011.01101.0110102.', '1', '1', '#4cd964', '/aio/aio/comm/image/menuIcon10.png');
INSERT INTO `perm_resource` VALUES ('0110103', '缴费证明打印', '01101', '1', '1', '/aio/view/neuqsoft/handan/yl/grjfzm.jsp', '4', '1', '1', '1', NULL, '.1.011.01101.0110103.', '1', '1', '#ff2d55', '/aio/aio/comm/image/menuIcon3.png');
INSERT INTO `perm_resource` VALUES ('01103', '医疗保险', '011', '1', '30', NULL, '3', '1', '1', '1', NULL, '.1.011.01103.', '1', '1', NULL, NULL);
INSERT INTO `perm_resource` VALUES ('0110307', '基本信息查询', '01103', '1', '10', '/aio/view/neuqsoft/handan/yb/query_basicinfo.jsp', '4', '1', '1', '2', NULL, '.1.011.01103.0110307.', '1', '1', '#5ac8fa', '/aio/aio/comm/image/menuIcon14.png');
INSERT INTO `perm_resource` VALUES ('0110308', '参保信息查询', '01103', '1', '20', '/aio/view/neuqsoft/handan/yb/grcbxxquery.jsp', '4', '1', '1', '2', NULL, '.1.011.01103.0110308.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon1.png');
INSERT INTO `perm_resource` VALUES ('0110309', '缴费明细查询', '01103', '1', '30', '/aio/view/neuqsoft/handan/yb/query_jfmx.jsp', '4', '1', '1', '1', NULL, '.1.011.01103.0110309.', '1', '1', '#FF9900', '/aio/aio/comm/image/menuIcon12.png');
INSERT INTO `perm_resource` VALUES ('0110310', '医保账户查询', '01103', '1', '40', '/aio/view/neuqsoft/handan/yb/query_grzh.jsp', '4', '1', '1', '2', NULL, '.1.011.01103.0110310.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon17.png');
INSERT INTO `perm_resource` VALUES ('0110311', '医疗消费查询', '01103', '1', '50', '/aio/view/neuqsoft/handan/yb/querydoctor_zhzc.jsp', '4', '1', '1', '2', NULL, '.1.011.01103.0110311.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon16.png');
INSERT INTO `perm_resource` VALUES ('0110312', '药品目录', '01103', '1', '60', '/aio/view/neuqsoft/handan/yb/drugscatalog.jsp', '4', '1', '1', '2', NULL, '.1.011.01103.0110312.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon4.png');
INSERT INTO `perm_resource` VALUES ('0110313', '诊疗目录', '01103', '1', '70', '/aio/view/neuqsoft/handan/yb/zhenliaomulu.jsp', '4', '1', '1', '2', NULL, '.1.011.01103.0110313.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon23.png');
INSERT INTO `perm_resource` VALUES ('0110314', '医疗机构', '01103', '1', '80', '/aio/view/neuqsoft/handan/yb/query_yljg.jsp', '4', '1', '1', '2', NULL, '.1.011.01103.0110314.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon21.png');
INSERT INTO `perm_resource` VALUES ('01104', '工伤保险', '011', '1', '40', NULL, '3', '1', '1', '1', NULL, '.1.011.01104.', '1', '1', NULL, NULL);
INSERT INTO `perm_resource` VALUES ('0110401', '参保信息查询', '01104', '1', '20', '/aio/view/neuqsoft/handan/gs/grcbxxquery.jsp', '4', '1', '1', '2', NULL, '.1.011.01104.0110401.', '1', '1', '#ff9500', '/aio/aio/comm/image/menuIcon1.png');
INSERT INTO `perm_resource` VALUES ('0110402', '待遇发放查询', '01104', '1', '30', '/aio/view/neuqsoft/handan/gs/query_dyff.jsp', '4', '1', '1', '2', NULL, '.1.011.01104.0110402.', '1', '1', '#4cd964', '/aio/aio/comm/image/menuIcon22.png');
INSERT INTO `perm_resource` VALUES ('0110403', '基本信息查询', '01104', '1', '10', '/aio/view/neuqsoft/handan/gs/query_basicinfo.jsp', '4', '1', '1', '2', NULL, '.1.011.01104.0110403.', '1', '1', '#4cd964', '/aio/aio/comm/image/menuIcon14.png');
INSERT INTO `perm_resource` VALUES ('0110404', '缴费明细查询', '01104', '1', '40', '/aio/view/neuqsoft/handan/gs/query_jfmx.jsp', '4', '1', '1', '2', NULL, '.1.011.01104.0110404.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon12.png');
INSERT INTO `perm_resource` VALUES ('01105', '企业养老保险', '011', '1', '20', NULL, '3', '1', '1', '1', NULL, '.1.011.01105.', '1', '1', NULL, NULL);
INSERT INTO `perm_resource` VALUES ('0110501', '灵活人员缴费核定', '01105', '1', '80', '/aio/view/neuqsoft/handan/yl/hdsb.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110501.', '1', '1', NULL, '/aio/aio/comm/image/lhjfhd.png');
INSERT INTO `perm_resource` VALUES ('0110502', '个人权益单打印', '01105', '1', '85', '/aio/view/neuqsoft/handan/yl/grqyd.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110502.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon16.png');
INSERT INTO `perm_resource` VALUES ('0110503', '待遇发放查询', '01105', '1', '40', '/aio/view/neuqsoft/handan/yl/query_yljff.jsp', '4', '1', '1', '1', NULL, '.1.011.01105.0110503.', '1', '1', '#ff2d55', '/aio/aio/comm/image/menuIcon19.png');
INSERT INTO `perm_resource` VALUES ('0110504', '退休金证明信打印', '01105', '1', '90', '/aio/view/neuqsoft/handan/yl/txrygzzm.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110504.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon17.png');
INSERT INTO `perm_resource` VALUES ('0110505', '基本信息查询', '01105', '1', '10', '/aio/view/neuqsoft/handan/yl/query_basicinfo.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110505.', '1', '1', '#ffcc00', '/aio/aio/comm/image/menuIcon14.png');
INSERT INTO `perm_resource` VALUES ('0110506', '参保信息查询', '01105', '1', '20', '/aio/view/neuqsoft/handan/yl/grcbxxquery.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110506.', '1', '1', '#ff9500', '/aio/aio/comm/image/menuIcon1.png');
INSERT INTO `perm_resource` VALUES ('0110510', '养老账户查询', '01105', '1', '60', '/aio/view/neuqsoft/handan/yl/query_ylyzh.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110510.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon17.png');
INSERT INTO `perm_resource` VALUES ('0110511', '缴费明细查询', '01105', '1', '30', '/aio/view/neuqsoft/handan/yl/query_jfmx.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110511.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon12.png');
INSERT INTO `perm_resource` VALUES ('0110512', '缴费证明打印', '01105', '1', '70', '/aio/view/neuqsoft/handan/yl/grjfzm.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110512.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon3.png');
INSERT INTO `perm_resource` VALUES ('0110513', '缴费证明打印2', '0110511', '1', '70', '/aio/view/neuqsoft/handan/yl/grjfzm.jsp', '4', '1', '1', '2', NULL, '.1.011.01105.0110512.', '1', '1', NULL, '/aio/aio/comm/image/menuIcon3.png');
SET FOREIGN_KEY_CHECKS = 1;
示例:树形查询sql
with recursive tab1(resource_id,resource_name,menu_level,resource_path,rn,orderstr) AS (
SELECT resource_id,resource_name,menu_level,resource_path,
@rn := 1 rn,
cast(@rn AS CHAR) orderstr
FROM perm_resource t0
WHERE t0.belong_systems = '1' AND t0.resource_id='011'
union all
SELECT t1.resource_id,t1.resource_name,t1.menu_level,t2.resource_path,
@rn := @rn + 1 rn,
concat(t2.orderstr, '-', @rn)
FROM perm_resource t1, tab1 t2
WHERE t1.belong_systems = '1' AND t1.resource_parent_id = t2.resource_id
)
SELECT t3.* FROM tab1 t3
WHERE t3.rn > '0'
ORDER BY t3.orderstr;
10: 自增id,类似Order的序列,可以从指定数值开始
-- 定义一个从800000001开始的序列
SELECT (CASE WHEN auto_increment IS NULL THEN 800000001
WHEN auto_increment < 800000000 THEN 800000000 + auto_increment ELSE auto_increment END)
FROM information_schema.tables
WHERE table_schema = '数据库模式名' AND table_name = '此模式下的表名';

码字不易,于你有利,勿忘点赞
江山代有才人出,各领风骚数百年
651





