mysql中goup与order的混合使用

mysql中,order用于记录排序,group 用于分组,一般使用在sum,count函数中。这些是group与order一般的用法,group 还可用于合并多行记录,现在需求如下:

bc_front表结构为:| bc_front | CREATE TABLE `bc_front` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `create_dt` datetime DEFAULT NULL,
  `tab_no` int(11) DEFAULT NULL,
  `exposure_no` varchar(30) NOT NULL,
  `title` varchar(50) DEFAULT NULL,
  `contents` text,
  `link_url` varchar(255) DEFAULT NULL,
  `image_url` varchar(255) DEFAULT NULL,
  `org_id` int(11) DEFAULT NULL,
  `org_name` varchar(255) DEFAULT NULL,
  `exposure_yn` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=62 DEFAULT CHARSET=utf8 | 


在这张表里面,记录多版本的数据,在每次获取记录时,只获取最新版本的数据。

那么,我们该如何实现呢,最简单的sql,如下:

 select * from bc_front  group by exposure_no order by exposure_no desc;可是发现这样查询出的结果并非想要的,我们发现这样sql语句执行的结果是,按自然顺序先用group进行筛选,然后再对筛选的结果进行order,而并非我们想要的先order排序,然后再用group by 进行筛选,最后我们采用下面的sql语句实现了,select a.* from (select * from bc_front order by exposure_no ASC,create_dt DESC) as a group by a.exposure_no order by a.exposure_no ASC;虽然得到了想要的结果,可是却牺牲了效率,有没有更好的办法呢?

### 回答1: 在Objective-C,`group`是GCD(Grand Central Dispatch)的一个概念,用于将多个异步任务组合成一个组,并在所有任务完成后执行一个回调函数。 使用`dispatch_group_create()`函数创建一个`dispatch_group_t`类型的组,然后将需要执行的任务异步提交到队列,并使用`dispatch_group_enter()`函数将任务添加到组,当任务完成时,使用`dispatch_group_leave()`函数将任务从组移除。最后,使用`dispatch_group_notify()`函数在所有任务完成后执行回调函数。 示例代码如下: ``` dispatch_group_t group = dispatch_group_create(); dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_group_enter(group); dispatch_async(queue, ^{ // 执行任务1 dispatch_group_leave(group); }); dispatch_group_enter(group); dispatch_async(queue, ^{ // 执行任务2 dispatch_group_leave(group); }); dispatch_group_notify(group, dispatch_get_main_queue(), ^{ // 所有任务完成后执行的回调函数 }); ``` 上面的代码创建了一个`dispatch_group_t`类型的组,然后将两个异步任务添加到组,并在所有任务完成后执行一个回调函数。 ### 回答2: 在OC,group(组)是一种用于将相关的对象或数据进行分组管理的机制。通过创建组,可以将一组相关的对象或数据聚合在一起,便于组织和管理。 在OC,我们可以使用GCD(Grand Central Dispatch)来创建并管理组。可以将一系列的任务(比如网络请求、文件下载等)添加到一个组,并通过监视组任务的完成情况来控制程序的执行流程。当组所有任务都完成时,我们可以执行一些后续操作,比如更新UI、处理结果等。 使用组的好处是可以方便地管理和监控一组任务的执行情况,避免了繁琐的多线程同步操作。通过组,我们可以更加灵活地控制程序的流程,提高程序的性能和响应速度。 在使用组时,可以使用`dispatch_group_create`函数创建一个组,使用`dispatch_group_async`函数将任务添加到组使用`dispatch_group_notify`函数在组任务都完成时执行后续操作。可以使用`dispatch_group_wait`函数来等待组任务的完成,或者使用`dispatch_group_enter`和`dispatch_group_leave`函数手动管理组的任务状态。 总之,group(组)是OC用于管理一组相关任务的机制,通过使用组,我们可以更方便地控制程序的执行流程,并提高程序的性能和可读性。 ### 回答3: 在OC(Objective-C),group(组)是一种用于组织和管理项目文件的概念。它是一种逻辑上的分类方式,用于将相关的文件组织在一起,并且在项目方便地访问和管理它们。 使用group可以将不同类型的文件(如源代码、资源文件、头文件等)按照功能、模块、类别等进行分组。例如,一个iOS应用程序可以将UI相关的文件放在一个名为"Views"的group,将数据模型相关的文件放在一个名为"Models"的group。 通过使用group,可以在项目导航器以层次结构的形式展示项目的文件结构,使得项目更加清晰易懂。同时,group还可以用于管理文件的引用和组装,例如通过将文件拖拽到group来添加文件到项目,或者通过更改group来重新组织文件的结构。 需要注意的是,group只是对项目文件的组织方式,并不真正影响文件的物理位置。实际上,group只是在项目的.pbxproj文件添加了一条相对路径的记录,指示该文件在项目的位置。在构建项目时,这些文件会被相应地拷贝到项目的目标文件夹。 总之,group是OC用于组织和管理项目文件的概念,可以将相关的文件组织在一起,以便更好地理解和管理项目的文件结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值