一文教你使用sql快速查询1对多数据关系,生成一个多维数据!

news2024/11/27 0:36:23

本篇文章主要讲解:利用mysql的sql特性,实现对多表查询下,一个用户对应多条记录数据查询为一条数据并以列表形式显示的教程。
日期:2024年6月17日
作者:任聪聪

一、创建数据库表

创建test_a表,内容如下:

在这里插入图片描述

创建test_b表,内容如下:

在这里插入图片描述

二、填充测试数据

步骤一、点击数据表进入到详情,点击数据生成

在这里插入图片描述

步骤二、配置字段类型及信息

在这里插入图片描述
提示:记得勾选所有的数据表

步骤三、点击单个字段进行配置规则

在这里插入图片描述
end:完成所有配置后点击下一步。

步骤四、查阅自己的测试数据是否正确

在这里插入图片描述
注意:这里我们是多的关系,所以一个用户需要多个产品信息及记录,故此尽量填写循环1-100内,使得1000条数据中大部分都是有一个用户多条产品信息的数据。

在这里插入图片描述

步骤五、点击开始生成数据

在这里插入图片描述
生成完毕:
在这里插入图片描述

三、实现查询效果

1、实现查询一个用户显示产品信息为产品1,产品2,产品3

效果:

在这里插入图片描述
可以看到,我们通过sql直接将用户关联的产品进行了单独的字段定义,并按照我们的要求进行了输出。

sql实例:

 SELECT 
a.id,
GROUP_CONCAT(b.product_name SEPARATOR ', ') AS b_list 
FROM 
test_a A
LEFT JOIN 
    test_b b ON a.id = b.a_id  
WHERE 
a.id = 1
 GROUP BY 
a.id;

2、实现多表查询输出json对象类型-固定字符串

效果:

在这里插入图片描述

sql实例:

SELECT 
    a.id,
    JSON_aRRaYaGG(JSON_ObJECT(
        b.a_id,
        'b.product_name')) aS b_json
FROM 
    test_a a
LEFT JOIN 
    test_b b ON a.id = b.a_id
WHERE 
    a.id = 1
GROUP bY 
    a.id;

3.实现查询json数据对应的多表关系数据

效果:

在这里插入图片描述

sql实例:

SELECT 
    a.id,
    JSON_aRRaYaGG(JSON_ObJECT(
        b.a_id,
        b.product_name)) aS b_json
FROM 
    test_a a
LEFT JOIN 
    test_b b ON a.id = b.a_id
WHERE 
    a.id = 1
GROUP bY 
    a.id;

附件:

数据表格创建sql语句:

/*
 Navicat Premium Data Transfer

 Source Server         : mysqlLocal
 Source Server Type    : MySQL
 Source Server Version : 50738 (5.7.38-log)
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 50738 (5.7.38-log)
 File Encoding         : 65001

 Date: 17/06/2024 20:37:39
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for test_b
-- ----------------------------
DROP TABLE IF EXISTS `test_b`;
CREATE TABLE `test_b`  (
  `a_id` int(11) NOT NULL,
  `product_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for test_a
-- ----------------------------
DROP TABLE IF EXISTS `test_a`;
CREATE TABLE `test_a`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `reg_time` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1833485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 全栈系列250 数据流实践

说明 之前好几个企业都提过飞机在飞的时候换发动机的例子,来比喻变革是多么无奈和危险。还有的说法更直接:不变等死,变就是找死,总得选一样。 后来我自己的体会也差不多是这样,总有一些窘境让你抉择:是忽忽…

在Qt编写的exe或者dll中设置版本号

1.背景 在别人编写的exe或者动态库中,通过右键–》属性–》详细信息中,通常都有版本信息: 那我们自己编译出来的Qt程序,如何设置这些版本号呢? 2.解决方案 参考【.pro文件中设置版本等信息】,只要在工…

【完结】无代码网页爬虫软件——八爪鱼采集器入门基础教程

《八爪鱼采集器入门基础教程》大纲如下: 课程所提软件,八爪鱼采集器下载: 1.软件分享[耶]八爪鱼,爬取了几百条网站上的公开数据,不用学代码真的很方便。[得意]2.发现了一个很棒的软件,?不用学python也可…

【UEditorPlus】后端配置项没有正常加载,上传插件不能正常使用

接上文【UEditorPlus】后端配置项没有正常加载,上传插件不能正常使用_ueditor ruoyi vue后端配置项没有正常加载,上传插件不能正常使用!-CSDN博客 成功解决图片、视频上传问题后,当服务部署在公网时,会存在大文件无法正常上传的问题。 出现…

微软修复Wi-Fi驱动高危漏洞 影响Windows所有版本 可通过局域网发起攻击

微软修复 WiFi 驱动程序中的高危安全漏洞,该漏洞影响 Windows 所有版本,可以通过公共 WiFi 等发起攻击。如果攻击者能够接入到目标设备所处的网络中,则可以悄无声息完成攻击,不需要用户进行任何交互。 在本月例行安全更新中微软修…

比特币的共识协议

目录 前言 一、铸币交易 1.铸币权 2.铸币交易(coinbase tx) 3.输入和输出 二、小型的区块链 1.见下图所示 2.哈希指针 3.双花攻击 三、块头块身,全节点轻节点 1.块头(block head) 2.块身 3.全节点full node(fully validating node…

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(六)---- 初窥操作系统启动流程(xv6启动)

系列文章目录 操作系统入门系列-MIT6.S081(操作系统)学习笔记(一)---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建&#x…

数据库系统概论(个人笔记)(第四部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)4、中间的SQL4.1 连接表达式4.2 视图4.3 事务4.4 完整性约束4.5 SQL数据类型和模式4.6 SQL中的索引定义4.7 授权 4、中间的SQL 4.1 连接表达式 Join Expressions Join…

10.无代码爬虫软件做网页数据抓取流程——工作流程设置与数据预览

首先,多数情况下免费版本的功能,已经可以满足绝大多数采集需求,想了解八爪鱼采集器版本区别的详情,请访问这篇帖子:https://blog.csdn.net/cctv1123/article/details/139581468 八爪鱼采集器免费版和个人版、团队版下…

视频监控平台:通过网络SDK对TCL网络摄像机进行PTZ控制 的源代码介绍及分享

目录 一、视频监控平台介绍 (一)概述 (二)视频接入能力介绍 (三)功能介绍 二、TCL网络摄像机 (一)360度全景自动旋转: (二)高清夜视和全彩…

五、路由协议

目录 一、为何划分子网? 二、静态路由 三、OSPF 3.1、OSPF原理 3.1.1、ospf四步过程 3.2、OSPF区域划分 3.2.1、为什么划区域? 3.2.2、划分规则 3.3、OSPF参数 3.4、五种报文 3.4.1、hello报文 3.4.2、DD报文 3.4.2、LSR、LSU、LSAck报文 3…

黄仁勋:下一波AI的浪潮是物理AI

B站:啥都会一点的研究生公众号:啥都会一点的研究生 最近AI圈又发生了啥? 快手视频生成大模型“可灵”开放邀测,效果对标 Sora 在OpenAl文生视频大模型Sora发布后,国内企业争相入局,快手视频生成大模型可…

MySQL之优化服务器设置和复制(一)

优化服务器设置 操作系统状态 CPU密集型的机器 CPU密集型服务器的vmstat输出通常在us列会有一个很高的值,报告了花费在非内核代码上的CPU时钟;也可能在sy列有很高的值,表示系统CPU利用率,超过20%就足以令人不安了。在大部分情况下&#xff…

pyqt 鼠绘椭圆 椭圆标注

目录 pyqt 椭圆标注 四个方向可以调整,调整时,另一端固定,只调整当前端,椭圆参数保存加载json pyqt 画椭圆中心点固定,调整是,两端一起调整。 pyqt 椭圆标注 四个方向可以调整,调整时,另一端固定,只调整当前端,椭圆参数保存加载json import sys import json from …

React@16.x(32)useDebugValue

目录 1&#xff0c;介绍2&#xff0c;作用 1&#xff0c;介绍 从一个例子开始&#xff1a; export default function App() {const [n, setN] useState(0);const refH1 useRef();useEffect(() > {console.log("父组件");});return <h1 ref{refH1}>{n}&l…

C++语法02 输出语句与分隔

目录 标准输出语句 题目&#xff1a;小知的位置 小知的位置参考代码 如何输出算式的结果&#xff1f; 题目&#xff1a;难题 难题参考代码 如何分隔多个算式输出的内容&#xff1f; 题目&#xff1a;两道题目 两道题目参考代码 标准输出语句 标准输出指令&#xff1a…

一小时搞定JavaScript(1)——JS基础

前言,本篇文章是依据bilibili博主(波波酱老师)的学习笔记,波波酱老师讲的很好,很适合速成!!! 文章目录 1.基本语法1.1 JS语言的特点1.2 创建一个JS文件1.3 输入与输出1.4 变量1.4.1 命名规则1.4.2 变量声明数字类型字符串类型布尔类型未定义类型 1.4.3 类型转换隐式转换显示转…

【html】如何利用id选择器实现主题切换

今天给大家介绍一种方法来实现主题切换的效果 效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

【Linux 12】进程控制

文章目录 &#x1f308; Ⅰ 进程创建01. fork 函数介绍02. 写时拷贝03. fork 常规用法04. fork 调用失败的原因 &#x1f308; Ⅱ 进程终止01. 进程退出场景02. 常见退出方法 &#x1f308; Ⅲ 进程等待01. 进程等待必要性02. 进程等待的方法2.1 wait 方法2.2 waitpid 方法 03.…

AI大模型浪潮席卷而来,你准备好乘风破浪成为行业翘楚了吗?

揭秘AI大模型浪潮&#xff1a;你准备好乘风破浪了吗&#xff1f; 在繁华的都市中&#xff0c;程序员小李一直默默耕耘在代码的海洋中。然而&#xff0c;随着AI大模型技术的迅猛发展&#xff0c;他发现自己仿佛置身于一场没有硝烟的战争中。身边的同事纷纷掌握了新技术&#xf…