依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13|回复: 0

mysql中join用法,双表查询,表A数据,根据A表数据查B表最新的一条信息,字段自定义输出,

[复制链接] 主动推送

7801

主题

7853

帖子

8733

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8733
发表于 3 天前 | 显示全部楼层 |阅读模式
mysql中join用法,双表查询,表A数据,根据A表数据查B表最新的一条信息,字段自定义输出,
说明:表A中的数据为主,表B中的数据根据表A筛选出来的结果,选择最新的一条;

在MySQL中使用JOIN语句来查找表A中的数据,并根据A表数据查询B表中最新的一条信息,可以结合子查询和ORDER BY子句来实现。以下是一个示例,展示如何在MySQL中实现这个需求,并进行中文输出:
假设有两个表A和B,表A包含数据,表B包含相关的信息,并且有一个关联字段在两个表之间进行关联。我们要查询表A中的数据,并根据关联字段查找表B中最新的一条信息,然后自定义输出字段。
  1. sql
  2. SELECT A.id, A.name, B.info
  3. FROM A
  4. LEFT JOIN B ON A.id = B.a_id
  5. LEFT JOIN (
  6.     SELECT a_id, MAX(created_at) AS latest_date
  7.     FROM B
  8.     GROUP BY a_id
  9. ) AS latest_b ON B.a_id = latest_b.a_id AND B.created_at = latest_b.latest_date;
复制代码


在上面的查询中,我们使用了LEFT JOIN来连接表A和表B,并使用子查询来找到每个a_id对应的B表中最新的记录。最后,我们选择表A中的id和name字段,以及表B中的info字段进行输出。
请根据实际的表结构和字段名进行调整,以适应您的数据和需求。


上面代码查询出来的数据有多条重复的

如果查询结果中存在多条重复数据,您可以使用 `DISTINCT` 关键字来消除重复行。以下是如何在查询中使用 `DISTINCT` 关键字来确保结果中不包含重复行,以中文输出:
  1. sql
  2. SELECT DISTINCT A.id, A.name, B.info
  3. FROM A
  4. LEFT JOIN B ON A.id = B.a_id
  5. LEFT JOIN (
  6.     SELECT a_id, MAX(created_at) AS latest_date
  7.     FROM B
  8.     GROUP BY a_id
  9. ) AS latest_b ON B.a_id = latest_b.a_id AND B.created_at = latest_b.latest_date;
复制代码


在上面的查询中,通过在 `SELECT` 语句中使用 `DISTINCT` 关键字,您可以确保结果中不包含重复的行。这样可以避免返回多个相同的数据记录。


上面代码中,A表也要进行条件筛选

如果您想在查询中对表A进行条件筛选,并且确保结果中不包含重复行,您可以在查询中添加适当的条件。以下是一个示例查询,结合表A的条件筛选和DISTINCT关键字,以中文输出:
  1. sql
  2. SELECT DISTINCT A.id, A.name, B.info
  3. FROM A
  4. LEFT JOIN B ON A.id = B.a_id
  5. LEFT JOIN (
  6.     SELECT a_id, MAX(created_at) AS latest_date
  7.     FROM B
  8.     GROUP BY a_id
  9. ) AS latest_b ON B.a_id = latest_b.a_id AND B.created_at = latest_b.latest_date
  10. WHERE A.condition = 'your_condition';
复制代码


在上面的查询中,我们在查询的末尾添加了一个 `WHERE` 子句,用于对表A进行条件筛选。您可以根据实际情况替换 `'your_condition'` 为表A的具体条件。这样可以确保查询结果中不包含重复行,并且满足表A的条件筛选要求。



通过上面的几个步骤,查询出来的结果就符合要求了。
下面是实际工作中用到的。记录一下。
  1. SELECT DISTINCT a.id, a.gamegroupname,a.gmuserid,a.listsign, b.ip,b.date,b.route,b.details,b.operation
  2. FROM gamegroup as a
  3. LEFT JOIN gamelist as b ON a.id = b.gamegroupid  
  4. LEFT JOIN (
  5.     SELECT gamegroupid, MAX(id) AS latest_id
  6.     FROM gamelist
  7.     GROUP BY gamegroupid
  8. ) AS latest_b ON b.gamegroupid = latest_b.gamegroupid AND b.id = latest_b.latest_id

  9. WHERE a.if_new=1;
复制代码


相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员5折;永久VIP免费
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|依星源码资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2024-6-30 14:02

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表