基于【 MySql 】三 || 复杂sql语句
时间:2020-05-26
本文章向大家介绍基于【 MySql 】三 || 复杂sql语句,主要包括基于【 MySql 】三 || 复杂sql语句使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
自关联表查询所有上级和下级信息
1.表结构如下所示:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `hy_area`;
CREATE TABLE `hy_area` (
`id` int(0) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`pid` int(0) NULL DEFAULT NULL COMMENT '父id',
`short_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简称',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称',
`merger_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '全称',
`level` tinyint(0) NULL DEFAULT NULL COMMENT '层级 0 1 2 省市区县',
`pinyin` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '拼音',
`code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '长途区号',
`zip_code` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮编',
`first` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '首字母',
`lng` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '经度',
`lat` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '纬度',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3750 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
SET FOREIGN_KEY_CHECKS = 1;
2.查询所有上级
-- 查询所有上级
SELECT
T2.id,
T2.pid,
T2.short_name,
T2.`name`,
T2.merger_name,
T2.`level`,
T2.pinyin,
T2.`code`,
T2.zip_code,
T2.`first`,
T2.lng,
T2.lat,
T2.fid
FROM
(
SELECT
@r AS _id,
( SELECT @r := pid FROM hy_area WHERE id = _id ) AS parent,
@l := @l + 1 AS lvl
FROM
( SELECT @r := 2682, @l := 3 ) vars,
hy_area h
WHERE
@r <> 0
) T1
JOIN hy_area T2 ON T1._id = T2.id
ORDER BY
T2.id;
3.查询所有下级
-- 查询所有下级
SELECT
T2.id,
T2.pid,
T2.short_name,
T2.`name`,
T2.merger_name,
T2.`level`,
T2.pinyin,
T2.`code`,
T2.zip_code,
T2.`first`,
T2.lng,
T2.lat,
T2.fid
FROM
(
SELECT
@ids AS _ids,
( SELECT @ids := GROUP_CONCAT( id ) FROM hy_area WHERE FIND_IN_SET( pid, @ids ) ) AS cids,
@l := @l + 1 AS lvl
FROM
hy_area,
( SELECT @ids := 2671, @l := 2 ) b
WHERE
@ids IS NOT NULL
) id,
hy_area T2
WHERE
FIND_IN_SET( T2.id, id._ids )
ORDER BY
lvl,
id;
原文地址:https://www.cnblogs.com/kevin-ying/p/12964773.html
- Golang 通用连接池
- 解决JS操作Cookies出现的乱码问题,修复WordPress评论乱码
- 分享一个WordPress外链跳转教程,兼容知更鸟暗箱下载和文章索引
- 让WordPress RSS/Feed订阅数据延迟发布,附RSS技巧集锦
- Linux系统防CC攻击自动拉黑IP增强版Shell脚本
- 利用artDialog给网站添加一个能显示搜索来路和关键词的欢迎框
- 解决启用wp super cache缓存后,页面追加多个斜杠仍然可以访问的隐患
- WordPress集成底部滚动推荐条,让好文章不再被埋没
- go语言base64加密解密的方法
- WordPress酷炫CSS3读者墙,排名按年度、本月、本周划分的小方法
- WordPress给文章添加百度是否已收录查询和显示功能(自定义栏目优化版)
- PHP制作百度站内搜索绿色通道的网页列表数据文件
- 分享几个可用的二维码API,以及给博客添加文章二维码图片的方法
- AI即开即用,这是悄然推出的“腾讯最新AI技术”小程序
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 猿实战01——vue后台前端框架搭建
- 猿实战02——Spring+mybatis+maven+多模块框架搭建姿势
- 分布式集群调度框架Mesos架构与实现
- 蜜罐溯源
- BlackHat2020议题之Web缓存投毒
- python自学第二节课(笔记)
- 究竟!为什么处理排序后的数组比没有排序的快?想过没有?
- 2020 年最牛逼的 10 门编程语言
- Nginx系列:Nginx源码安装
- Nginx系列:负载均衡
- low版爬虫脚本,Python简单图片爬虫案例
- 漫画:什么是计数排序?
- SEO工具脚本,Python百度普通收录API提交工具
- Elastic Stack 实现日志的自动采集、搜索和分析
- 致开发人员:沉迷面向对象编程不可自拔?函数式编程了解一下