SQL联合查询:子表任一记录与主表联合查询

今天有网友群里提了这样一个关于SQL联合查询的需求:

一、有热心网友的方案:

二、我的方案:

select * from (
select a.*,(select top 1 Id from B as b where b.CgId =a.ID)as bid
from A as a
) as temp left join B as b2 on temp.bid=b2.Id

时间: 2024-10-29 19:12:05

SQL联合查询:子表任一记录与主表联合查询的相关文章

查询所有表的记录数SQLServer

SELECT object_name (i.id) TableName,          rows as RowCnt   FROM sysindexes i   INNER JOIN sysObjects o       ON (o.id = i.id AND o.xType = 'U ')   WHERE indid < 2   ORDER BY RowCnt desc,TableName 查询所有表的记录数SQLServer

SQL一对多取子表最新记录的所有字段(ROW_NUMBER()OVER()函数的应用)

ROW_NUMBER()OVER() 参数1:分组字段 PARTITION BY   ..,..,....  可选 参数2:排序字段 ORDER BY .. DESC  必须 实例: 根据ConfirmDate 排序,PayApplyId 分组 SELECT * FROM PayApplyConfirmRecord  SELECT ROW_NUMBER()OVER(PARTITION BY PayApplyId ORDER BY ConfirmDate DESC)  rowId,* from d

MySQL数据库中查询数据库表、字段总数量,查询数据总量

最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来. 1.查询数据库表数量 1 #查询MySQL服务中数据库表数据量 2 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; 3 #查询指定数据库表数量 4 SELECT COUNT(*) TABLES, table_schema FROM infor

数据库小记:根据指定名称查询数据库表名及根据指定名称查询数据库所有表中的字段名称(支持mysql/postgre)

意:本篇文章仅适用于mysql和postgre这两种数据库 1.查询数据库中所有表名及对应表的详细信息 select * from INFORMATION_SCHEMA.tables 2.根据指定名称查询表名(也可模糊查询,可查询表的详细信息) select *  from INFORMATION_SCHEMA.tables where table_name = 'eguid'; select * from INFORMATION_SCHEMA.tables where table_name l

SQL Server Update 根据自身表不同记录的值修改,链表修改

一.自链接方式 update b1 set b1.money = b1.money + b2.money from (select * from wallet where type='余额') b1 inner join (select * from wallet where type='积分') b2 on b1.userId= b2.userId 二.表链接 update r set r.cEnable = 0 from 表1 r inner join 表2 t on t.cId = r.c

根据子表的条件修改主表的数据

有这么一个需求:写一条sql语句,功能是当B表中的字段2值=X的时候,修改A表中的一个字段1=Y,SQL语句如下: update A表 set A表.字段1 = Y from A表 inner join B表 on A表关联字段=B表关联字段 where B表.字段2=X

MySQL学习——SQL查询语句(连接查询&amp;子查询)(三)

一:连接查询: 连接查询是将俩个或者俩个以上的表按照某个条件连接起来,从中选择需要的数据,连接查询同时查询俩个或者俩个以上的表时使用,当不同的表中存在表示相同意义的字段时,可以通过该字段来连接这几个表,例如,学生表中有course_id字段来表示所学课程的课程号,课程表中有num字段来表示课程号,那么可以通过学生表中的course_id字段与课程表中的num字段来进行连接查询,连接查询包括内连接查询和外连接查询. 1.1 内连接查询 内连接查询是一种常用的连接查询,内连接查询可以查询俩个或者以上

SQL内外层嵌套子查询

先逐行扫描外部查询的每一行,让每一行与内部查询的表进行对比,满足内部查询where条件的返回真,不满足的返回假. 提醒:单独执行内部查询时会报错. 首先执行一次外部查询 对应外部查询的每一行分别执行一次子查询,而且每次执行子查询时都会引用外部查询中当前行的值. 使用子查询的结果来确定外部查询的结果集. 例: 不同职工经手订单金额最大的订单信息 select a.* from 订购单 a where 金额 = (select max(金额) from 订购单 where 职工号=a.职工号) 不同

通过在Oracle子表外键上建立索引提高性能

根据我的经验,导致死锁的头号原因是外键未加索引(第二号原因是表上的位图索引遭到并发更新).在以下两种情况下,Oracle在修改父表后会对子表加一个全表锁: 1)如果更新了父表的主键(倘若遵循关系数据库的原则,即主键应当是不可变的,这种情况就很少见),由于外键上没有索引,所以子表会被锁住. 2) 如果删除了父表中的一行,整个子表也会被锁住(由于外键上没有索引). 除了全表锁外,在以下情况下,未加索引的外键也可能带来问题: 1) 如果有ON DELETE CASCADE,而且没有对子表加索引:例如,