`
nisen
  • 浏览: 77656 次
  • 性别: Icon_minigender_1
  • 来自: 河北 石家庄
社区版块
存档分类
最新评论

一个关于group在mysql和mssql中如何使用

阅读更多
问题:

mssql中是否可以用group实现如下或者其他解决方案

    表t1
    id t2id amount otherid
    1 1 11 123
    2 2 12 234
    3 3 13 345
    4 4 21 456
    5 5 22 567
    表t2
    id name
    1 一
    2 一
    3 一
    4 二
    5 二
    得到如下结果集:
    t2.name t1.amount t1.otherid
    一 36 123,234,345
    二 43 456,567

解答:
mssql不知道,通过查询mysql文档这么做可以做,已经测试通过。
select t2.name, sum(t1.amount),
     GROUP_CONCAT(t1.otherid ORDER BY t1.id ) as otherid
    from t1,t2
    where t1.t2id=t2.id 
    group by t2.name

我这里没有mssql的测试环境,mssql应当类似的.但是估计不同的是
GROUP_CONCAT这个函数。

代码

/*@charset utf8*/
/*test in Mysql5.0.24 server*/
DROP DATABASE IF EXISTS `testGroup`;
CREATE DATABASE `testGroup` ;
USE `testGroup`;

/* */
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
  `id` int,
  `t2id` int,
  `amount` int,
  `otherid` int
) ;
insert into  t1 values(1 ,1 ,11 ,123);
insert into  t1 values(2 ,2 ,12 ,234);
insert into  t1 values(3 ,3 ,13 ,345);
insert into  t1 values(4 ,4 ,21 ,456);
insert into  t1 values(5 ,5 ,22 ,567);

DROP TABLE IF EXISTS `t2`;
CREATE TABLE `t2` (
  `id` int,
  `name` varchar(20)
) ;

insert into  t2 values(1 ,'一');
insert into  t2 values(2 ,'一');
insert into  t2 values(3 ,'一');
insert into  t2 values(4 ,'二');
insert into  t2 values(5 ,'二');


/*
Result:

    t2.name t1.amount t1.otherid
    一 36 123,234,345
    二 43 456,567 

*/
select t2.name, sum(t1.amount),
     GROUP_CONCAT(t1.otherid ORDER BY t1.id ) as otherid 
    from t1,t2 
    where t1.t2id=t2.id  
    group by t2.name

分享到:
评论
1 楼 nisen 2010-12-12  
后记:

我在教学中也经常看到有人问我sql问题,给我一个或者多个表,然后一个结果,解决它。但最让我抓狂的是很多人仅仅给我这个表,如果给了我建表语句、表中的数据insert语句我将会把我的大部分精力去解决问题本身,而现在我主要精力都是重新还原表,还原表中的数据,而用很少的精力写出答案。如果你想问别人答案一定要准备好让别人花更多的精力帮你解决问题,而不是让别人做本来你在问问提前可以准备好的内容。

记得有人问过我一个超长的sql,我手工格式化以后发给他,他就自己把问题解决了。跟这个是一样的。

另:
这个问题不是我的学生问的,而是一个朋友问的,这个朋友也有多年经验了。其实问题和解答都不难,朋友问了两天了,估计这个问题他自己也解决了。这里拿这个问题说事不是针对本人而是一个很好的示例来告诉大家,问问题前先理清思路。

相关推荐

    将MSSQL改写为MYSQL的经验

    - MSSQL中使用`@@IDENTITY`来获取最后插入的ID值,在MySQL中则使用`LAST_INSERT_ID()`。 2. **处理空值** - 在MSSQL中的`ISNULL`函数,在MySQL中对应的是`IFNULL`。例如: ```sql -- MSSQL SELECT ISNULL...

    数据库文件,包括mysql,mssql,oracle

    首先,MySQL是一个开源、免费的数据库系统,广泛应用于Web应用。它支持SQL标准,提供了快速的数据存取和高度的可扩展性。MySQL的用户管理涉及创建、修改和删除用户账户,以及权限分配。表空间管理则包括设置存储空间...

    SQL语句大全以及PHP_APACHE_MYSQL配置和MSSQL经典(经典珍藏版).zip

    这个压缩包对于正在学习或已经在工作中使用这些技术的人来说,无疑是一份宝贵的参考资料,可以提高他们的技术水平和解决问题的能力。通过深入学习和实践,可以提升数据库管理、Web开发和系统运维的技能,对于个人的...

    ASP+MSSQL仿拉手网团购程序源码 - ASP+MSSQL团购网站程序源码(附说明文档)

    SLStuan(仿拉手网团购程序)是一套Groupon模式的开源团购程序,是一套仿拉手网团购程序,是国内首套采用ASP+MSSQL开发的团购程序,安装超简,功能超全面,在保留手拉手团购系统版权的前提下,允许所有用户永久免费...

    PHP设计笔记.pdf

    MySql 中的自动增长量使用 AUTO_INCREMENT,而 MSSql 中使用 IDENTITY 概念。 本文档提供了使用 PHP4 开发基于数据库的 WEB 程序的详细指南,涵盖了 PHP4 的安装、配置、数据库连接、查询语句、分页等方面的知识点...

    mysql基础只是总结

    MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),以其高性能、可靠性和易用性而闻名。它支持多种操作系统,并且拥有丰富的功能和良好的社区支持。除了MySQL之外,还有其他几种主流的关系型数据库系统,...

    MySQL数据库详细文档

    ### MySQL数据库操作详解 #### 一、数据库管理 ##### 创建数据库 ```sql CREATE DATABASE database-name;...以上是MySQL数据库操作的一些基础和高级知识,这些命令和操作能够帮助你在数据库管理方面更加高效地工作。

    (008)《第五部分-练习题1:MySQL单表查询》

    使用`CREATE TABLE`语句创建了一个名为`student`的表,包含了`id`(主键,自动增长)、`class`(班级)、`chinese`(语文成绩)、`english`(英语成绩)、`math`(数学成绩)、`name`(姓名)、`age`(年龄)和`...

    与MSSQL对比学习MYSQL的心得(七)--查询

    在本篇《与MSSQL对比学习MYSQL的心得(七)--查询》中,我们将探讨MySQL中的查询操作,与SQL Server进行对比,以帮助读者更好地理解和掌握这两种数据库系统的查询差异和相似之处。MySQL的SELECT语句是数据检索的核心...

    mysql简单入门

    - EXCEPT运算符:从第一个SELECT语句的结果中排除第二个SELECT语句中出现的行。 - INTERSECT运算符:返回两个SELECT语句结果集的交集,即同时出现在两个查询结果中的行。 9. 外连接的使用 - LEFT (OUTER) JOIN:...

    SQL 参考手册中文版.chm

    SQL参考手册中可能还会详细介绍视图(VIEW)的概念,视图是基于一个或多个表的虚拟表,可以简化复杂的查询并提供安全性。索引(INDEX)是提高查询性能的关键,它们加速了数据的查找过程。 另外,存储过程(STORED ...

    Zabbix中文使用手册.pdf

    综上所述,Zabbix是一个功能强大的监控工具,能够满足不同规模企业和不同监控需求的场景。无论是对于小型网站还是大型企业的数据中心,Zabbix都能够提供全面的监控和报警服务,是IT运维管理不可或缺的工具之一。

    pinpoint 中文使用文档,供大家学习

    综上所述,Pinpoint是一个功能强大的APM工具,特别适合用于对大规模分布式系统进行性能监控和问题诊断。其提供的多种视图和分析功能,以及支持的广泛模块,使得Pinpoint可以应用于多种场景下。由于中文资料的稀缺,...

    SQL 拥有很多可用于计数和计算的内建函数

    5. **GROUP BY 语句**:在与聚合函数(如 COUNT(), SUM(), AVG(), MAX(), MIN() 等)一起使用时,GROUP BY 用于根据一个或多个列对数据进行分组,然后对每个组应用函数。例如,`SELECT department, COUNT(employee_...

    数据库产品技术解析.docx

    MySQL的InnoDB Cluster提供了一个全面的高可用性解决方案,包括MySQL Shell、MySQL Router和MySQL Group Replication。这些组件共同确保数据复制、容错和故障转移,提升了MySQL的集群管理能力。 6. **Percona的...

    zabbix使用手册

    它由一个国外团队维护更新,用户可以自由下载使用,并通过技术支持获得盈利。该软件使用C/S模式采集数据,B/S模式在Web端展示和配置,需运行在LAMP(Linux+Apache+MySQL+PHP)环境上。Zabbix支持自动发现网络设备和...

    sqlserver/mysql按天、按小时、按分钟统计连续时间段数据【推荐】

    在SQL Server和MySQL数据库中,按天、按小时或按分钟统计连续时间段数据是一项常见的需求,这有助于分析数据峰值和趋势。以下是如何实现这一目标的详细步骤和知识点: 1. **master..spt_values表**: - `master.....

    平时整理的SQL相关资料

    在IT行业中,SQL对于数据库管理和开发至关重要,无论是MSSQL(Microsoft SQL Server)还是其他数据库系统如MySQL、Oracle、PostgreSQL等,SQL的基本语法和原理都是相通的。 首先,让我们来看看SQL的基础知识。SQL...

Global site tag (gtag.js) - Google Analytics