鱼C论坛

 找回密码
 立即注册
查看: 2669|回复: 3

[已解决]sql 的问题

[复制链接]
发表于 2023-7-25 10:59:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
表A ,  
       
字段1字段2字段3
A100110
B200220
C300330



表B,

       
字段1字段2字段3
A120130
A122132
B203220
B201210
B20220
C300330





想通过字段1 让A表 join B 表;     B表中 如果有多记录, 只取其中的一记(随便的一记);   这样的sql 要怎么写才行???

最佳答案
2023-7-25 11:00:10
根据你的问题,你想通过字段1将A表和B表进行连接。如果B表中有多个相同的字段1记录,你只想选择一个。

这是一个解决方案:

首先,我们可以为B表创建一个子查询,选择每组中的一个记录,然后将子查询结果与A表连接。在下面的示例中,我将选择每组中的最大字段3值,但是你可以按照需要修改这个选择。请记住,因为SQL中没有随机函数,所以你必须选择一个字段以确定哪个记录被选中。

这是实现此目标的SQL语句:

  1. SELECT A.字段1, A.字段2, A.字段3, B.字段2 AS B字段2, B.字段3 AS B字段3
  2. FROM 表A A
  3. LEFT JOIN (
  4.     SELECT 字段1, MAX(字段2) AS 字段2, MAX(字段3) AS 字段3
  5.     FROM 表B
  6.     GROUP BY 字段1
  7. ) B ON A.字段1 = B.字段1;
复制代码


这个查询首先从表B中取出字段1的每一个唯一值,并选择这些值对应的最大字段2和字段3值。然后,我们使用LEFT JOIN将这个子查询的结果与表A连接。如果表A的字段1在子查询的结果中存在,那么将会返回相应的记录;否则,B字段2和B字段3的值将会是NULL。

请注意,因为你没有给出具体的数据库引擎类型(比如MySQL、PostgreSQL、SQLite等),所以我提供的解决方案可能需要根据你的具体环境进行调整。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-5 02:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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