这语句能列出两表不同的条目,但想了很久也想不到怎样才能分别列出两张表不同的条目,我的思路是分别在两表中查出不同的条目 即(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未测试,理论可行 */
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)