统计两个表中的记录数之和,语句怎么写

统计两个表中的记录数之和,语句怎么写,第1张

select * from LOVERA where phone not in(select phone from LOVERB) union select * from LOVERB where phone not in(select phone from LOVERA)

语句能列出两表不同的条目,但想了很久也想不到怎样才能分别列出两张表不同的条目,我的思路是分别在两表中查出不同的条目 即(A表有B表没有和B表有A表没有两语句),然后用union将两结果结合起来!

下一句是:

select 它们不同的条目个数分别为=count(*) from LOVERA where phone not in(select phone from LOVERB) union select count(*) from LOVERB where phone not in(select phone from LOVERA)

第二句也是差不多的情况,但这是不同的记录数,所以只有两个数据,这样就不难区分了!

楼主如果想到了解决办法也请告知一下我,大家共同学习!<

语句(假设你的系统取日期月份的函数MONTH):

SELECT MONTH(注册日期),COUNT(*) FROM 表 GROUP BY 1

产生的结果是:

1 23

2 10

3 45

如果你计算每个月度(200801、200802、……)的注册人数,应该使用下面的语句(假设你的系统取日期年度的函数是YEAR):

SELECT YEAR(注册日期)+" "+MONTH(注册日期),COUNT(*) FROM 表 GROUP BY 1

假如你的系统连接字符串不是使用+,那换为相应的字符或者函数,比如INFORMIX是使用YEAR(注册日期)||MONTH(注册日期),比如MYSQL是使用CONCATE函数

补充:

SELECT语句的教材专门有聚合函数那一章,你仔细看看吧。

在SELECT语句里面,GROUP子句配合SUM,AVG,MAX,MIN等函数完成分类统计功能,执行我的两个语句,查看输出的结果,你就知道GROUP的含义,下面取一个最简单的例子:

“SELECT COUNT(*) FROM 表”这个SQL语句返回的结果只有一个,就是数据库中的总记录条数,如果我们想统计不同用户名的分组进行汇总的记录条数,就应该在SELECT后增加一个字段,同事GROUP BY这个字段,完整的语句是:

SELECT 用户名,COUNT(*) FROM 表 GROUP BY 用户名

这个语句也可以这样写:

SELECT 用户名,COUNT(*) FROM 表 GROUP BY 1

这时候GROUP BY后面的整数表示按照相应序号的SELECT列分组,这里的1表示第一个的选择结果“用户名”。如果我们想按用户分组查记录数,但是只现实有重复的记录,那么用GROUP BY的一个HAVING修饰,完整语句如下:

SELECT 用户名,COUNT(*) FROM 表 GROUP BY 用户名 HAVING COUNT(*)>1<

(select count(id) from 2008XX01 where ID = 'a') ---1号的id为a的记录

你有31张表,这个没办法,上面的语句查询31次 再相加就OK了~

当然你也可以用存储过程实现。用个循环控制取数再相加,不过不管怎么样肯定都要取31次数的~<

假设[用户表]中通过[用户名]字段与[博客]表相关联,则更新语句如下:

UPDATE [用户表]

SET [主题数]= A.cnt

FROM (SELECT [用户名] , count(*) AS cnt FROM [博客] GROUP BY [用户名])

WHERE [用户表].[用户名]=A.[用户名]<

SQL="SELECT * FROM TableName WHERE CHARINDEX('a3',字段)>0

或者

SQL="SELECT * FROM TableName WHERE ','+ 字段 +',' LIKE '%,a3,%' "<

select sum(电量) as 总电量 from Parodox where 开始日期>'2006-05-31' and 结束日期<'2006-7-1'<

就是汇总很简单啊

insert into orderTJ /*将结果插入到orderTJ表*/

select month(orderTime), /*取得月份*/

year(orderTime), /*取得年份*/

shopID, /*

不知道你是要在某程序中实现,还是想用SQL语句实现?

若是想在某程序中实现的话(如在ASP中),可以这样(只是思路):

你先定义两个变量如

dim

M,N,

接下来,

SELECT

*

FROM

A......

M=记录集A中的某字段值,

SELECT

*

FROM

B......

******然后判断

对表B所作的查询记录集是否为文件头,这要使用BOF函数,也即是判断bof是否为真.若不为真则说明表中有数据.

IF

NOT

rs.BOF

THEN

N=记录集B中的某字段值

ELSE

*****若不为真,即表中无数据,则给N赋值为0.

N=0

END

IF

最后就可求出n+m

select t1.*,IFNULL(t2.num, 0) jf/** 积分*/

from (select * from A)t1, (select userid, sum(jifen) num from B group by userid)t2

where t1 left join t2 on t1.userid = t2.userid

/** sql未测试,理论可行 */


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10045636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存