向大家求教一个 sql 语句! 简单的两个表

问题描述

表一:testP=================tp_idtp_titletp_content表二:testC===============tc_idtp_id//关联testP表的idtc_titletc_content我有这两张表testP可以看成是父表testC子表然后我想把testP的内容全部读取出来,然后再想统计一下阿testP中的每一个记录有多少子记录,得到一个数字!我如何用一个sql语句实现

解决方案

解决方案二:
随手敲的,可能手误SELECTp.*,ISNULL(c.CNT,0)CNTFROMtestPpLEFTJOIN(SELECTCOUNT(*)CNT,tp_idFROMtestCGROUPBYtp_id)cONp.tp_id=c.tp_id

很多人的写法会是SELECT*,(SELECTCOUNT(*)FROMtestCWHEREtp_id=p.tp_id)CNTFROMtestPp

这种写法也可以,不过,子查询与外部语句有关联,无法进行连接优化,每查一行testP的记录都会统计一次,效率比较差.
解决方案三:
selecttp_title,count(*)fromtextpaleftjointestcbona.tp_id=b.tpidgroupbytp_title
解决方案四:
先连表再聚合也可以.那就是类似于2楼朋友的写法.不过有问题的,这种写法取出的count值最小是1,因为testP表总是有记录存在.当testC表未有对应的记录时,会取到1应该count(b.tc_id),读到null时忽略,才会得到0从效率考滤,还是建议先聚合再连表.

时间: 2024-12-21 21:40:36

向大家求教一个 sql 语句! 简单的两个表的相关文章

求教这两张表有什么联系写一个sql语句呀!

问题描述 求教这两张表有什么联系写一个sql语句呀! ![ 解决方案 一个sql语句 怎么写比较好在同一个sql语句中写不同条件的count数量,和查询半年的数据自学数据库之一个自己写的SQL语句 解决方案二: 库存管理里面的商品product_id 和商品管理里的no,是同一个值么,如果不是的话,那商品管理表里面还有一部分看不到的字段呢? 解决方案三: 解决方案四: 两张表的第一个ID字段是不是同一个?

一个SQL语句引发的ORA-00600错误排查

作者介绍 杨建荣,[DBAplus社群]联合发起人.现就职于搜狐畅游,Oracle ACE-A.YEP成员,超7年数据库开发和运维经验,擅长电信数据业务.数据库迁移和性能调优.持Oracle 10G OCP,OCM,MySQL OCP认证,<Oracle DBA工作笔记>作者.   Merge是从Oracle 9i就引入的功能,它是有别于其他DML中的一种特殊语句,类似于MySQL中的 insert into on duplicate key操作,而且Merge功能更丰富,可以同时对一个表中的

一个SQL语句引发的ORA-00600错误排查(一)

最近有一个同事问我一个问题,说他运行一个SQL语句抛出了ORA-00600的错误,想让我帮忙分析一下,这种问题听了确实有兴趣,了解了问题的大体情况之后,发现这个问题还是值得分析分析的,因为只是客户端调用抛出异常,没有给服务器端带来什么致命的影响,这样的问题还是很耐人寻味的.     简单沟通后,我得到了同事提供的SQL语句和执行环境,语句类似下面的形式: MERGE INTO (SELECT * FROM TEST_SERVER_LOG WHERE BUY_TIME>=TO_DATE(:1 ,'

怎么写出一个sql语句来表示销售的配件的数量

问题描述 怎么写出一个sql语句来表示销售的配件的数量 String sql = "select '配件A' label,12 value " + "union all " + "select '配件B' label,10 value "; 来修改这个sql来表示表中的内容 解决方案 啥玩意,你这不是已经有这些数据了吗,还要改什么

需要写一个SQL语句,大神帮我吧!在线等

问题描述 需要写一个SQL语句,大神帮我吧!在线等 我有一张产品供货价的表ProductPrice,该表有五个字段,分别是id,ProductID(外键关联产品ID),ChannelID(外键关联渠道ID),CustomerTypeID(外键关联客户类型ID),PriceSupply(供货价), 该表有三个外键,我最终的目的是得到该外键对应的供货价,其中一个ID变了供货价肯定就变了.看一下该表的的结构和数据. 但是我页面上只有两个下拉框控件,一个是客户,一个是产品.我只能拿到这两个对应的ID,渠

sql语句-表T(A)包含正整数,可能有重复,构造一个SQL语句查询不在表T中的最小正整数

问题描述 表T(A)包含正整数,可能有重复,构造一个SQL语句查询不在表T中的最小正整数 表T(A)包含正整数,可能有重复,构造一个SQL语句查询不在表T中的最小正整数,需要考虑表T包含或不包含正整数1两种情况.不能编程实现.考虑了半天没有很好的思路,请大家指点则个 解决方案 DECLARE @minvalue INT = select min(A) from T IF minvalue > 1 return 1 ELSE DECLARE @maxvalue INT = select max(A

sql语句-请教一个SQL语句如何写?

问题描述 请教一个SQL语句如何写? 求助大侠:表A中有字段a,b,c,d,e,f,但并不是所有字段都一定有值,其中有值字段原值为'201xxxx'现在要将有值字段由'201xxxx'替换为'2001xxxx',无值字段保留为空,请问SQL语句如何写?(其中'201xxxx'中的xxxx代表数字,比如20101或201010101,位数不定,也可能只为201)请赐教. 解决方案 update [A] set [a] = left(a2)+'0'+right(alen(a)-2) [b] = le

mysql 如何通过一个sql语句搜出比例关系

问题描述 mysql 如何通过一个sql语句搜出比例关系 例如 一个表格里有 商品,价格,日期 三个字段 a 10.2,20151008 a 9.2,20151009 a 7.2,20151010 b 11.2,20151008 b 10.2,20151008 我要搜 在历史上各个商品价格低于10¥的次数占该商品出现的总次数的百分比,应该如何写mysql语句呢? 谢谢了 搜出结果要类似 a 2/3 b 0/2 这样的sql语句怎么写呢? 解决方案 假设表名是ProductPrice, 商品,价格

请教一个sql语句该怎么写

问题描述 请教一个sql语句该怎么写 table_A id a b c d table_B_id tabel_B id e f g 怎么查询的到table_A_id:这一行的able_B_id,的对应的tabel_B行 中e等于特定值.有点乱希望理解. 解决方案 select * from table_A a join table_B b on a.table_B_id = b.id where b.e = xxx; xxx为条件 解决方案二: 确实有点乱,想帮你都帮不了