假设你有下表(这里感兴趣的列是cid):
+-----+-------+-------+-------+---------------------+--------------+
| cid | pid | rid | clink | time | snippet |
+-----+-------+-------+-------+---------------------+--------------+
| 155 | 11222 | 1499 | 1137 | 2012-08-22 03:05:06 | hi |
| 138 | 11222 | 241 | 1136 | 2012-08-21 05:25:00 | again |
| 138 | 11222 | 241 | 1135 | 2012-08-21 05:16:40 | hi |
| 155 | 11222 | 1499 | 1134 | 2012-08-21 05:11:00 | hi cute |
| 140 | 11222 | 11223 | 1133 | 2012-08-21 05:05:18 | hi |
| 154 | 11222 | 565 | 1132 | 2012-08-21 05:04:47 | 7 |
| 153 | 11222 | 272 | 1131 | 2012-08-21 05:04:41 | 6 |
| 146 | 11222 | 362 | 1130 | 2012-08-21 05:04:33 | 5 |
| 152 | 11222 | 364 | 1129 | 2012-08-21 05:04:27 | 4 |
| 151 | 11222 | 390 | 1128 | 2012-08-21 05:04:22 | 3 |
| 150 | 11222 | 333 | 1127 | 2012-08-21 05:04:16 | 2 |
| 148 | 11222 | 268 | 1126 | 2012-08-21 05:04:10 | 1 |
| 140 | 11222 | 11223 | 1125 | 2012-08-21 04:59:57 | hi sir |
| 147 | 11222 | 283 | 1123 | 2012-08-21 03:29:55 | yo |
| 140 | 11222 | 11223 | 1121 | 2012-08-21 02:12:13 | hello! |
| 139 | 11222 | 249 | 1120 | 2012-08-21 02:11:53 | hi :) |
| 140 | 11222 | 11223 | 1119 | 2012-08-21 02:11:26 | hi :) |
| 140 | 11222 | 11223 | 1118 | 2012-08-21 02:11:08 | hi too |
| 139 | 11222 | 249 | 1117 | 2012-08-21 02:11:00 | :P |
| 139 | 11222 | 249 | 1116 | 2012-08-21 02:10:57 | hi |
| 139 | 11222 | 249 | 1115 | 2012-08-21 02:10:51 | helo |
| 139 | 11222 | 249 | 1114 | 2012-08-21 02:06:19 | hi |
| 139 | 11222 | 249 | 1113 | 2012-08-21 02:05:45 | hi baby |
| 139 | 11222 | 249 | 1112 | 2012-08-21 02:05:00 | hi |
| 139 | 11222 | 249 | 1111 | 2012-08-21 02:04:41 | hi |
| 140 | 11222 | 11223 | 1110 | 2012-08-21 02:04:26 | hi |
| 140 | 11222 | 11223 | 1108 | 2012-08-21 01:47:40 | hey :) |
| 139 | 11222 | 249 | 1107 | 2012-08-21 01:44:43 | hi |
| 138 | 11222 | 241 | 1106 | 2012-08-21 01:44:11 | hi |
| 138 | 11222 | 241 | 1105 | 2012-08-21 01:09:20 | conv 1 msg 1 |
+-----+-------+-------+-------+---------------------+--------------+
如何仅提取每个 cid 的第一次出现?结果表将是:
+-----+-------+-------+-------+---------------------+--------------+
| cid | pid | rid | clink | time | snippet |
+-----+-------+-------+-------+---------------------+--------------+
| 155 | 11222 | 1499 | 1137 | 2012-08-22 03:05:06 | hi |
| 138 | 11222 | 241 | 1136 | 2012-08-21 05:25:00 | again |
| 140 | 11222 | 11223 | 1133 | 2012-08-21 05:05:18 | hi |
| 154 | 11222 | 565 | 1132 | 2012-08-21 05:04:47 | 7 |
| 153 | 11222 | 272 | 1131 | 2012-08-21 05:04:41 | 6 |
| 146 | 11222 | 362 | 1130 | 2012-08-21 05:04:33 | 5 |
| 152 | 11222 | 364 | 1129 | 2012-08-21 05:04:27 | 4 |
| 151 | 11222 | 390 | 1128 | 2012-08-21 05:04:22 | 3 |
| 150 | 11222 | 333 | 1127 | 2012-08-21 05:04:16 | 2 |
| 148 | 11222 | 268 | 1126 | 2012-08-21 05:04:10 | 1 |
| 147 | 11222 | 283 | 1123 | 2012-08-21 03:29:55 | yo |
| 140 | 11222 | 11223 | 1121 | 2012-08-21 02:12:13 | hello! |
| 139 | 11222 | 249 | 1120 | 2012-08-21 02:11:53 | hi :) |
+-----+-------+-------+-------+---------------------+--------------+
最佳答案
mysql对此有一个“作弊”:
select *
from mytable
group by cid;
这就是你所需要的,因为在 mysql 中它允许你不聚合非分组列(其他数据库会抛出语法错误),在这种情况下它只输出第一次出现每个分组依据值。请注意,虽然这不能保证确定“第一次”出现的方式(这将是读取行的方式)
如果您想要特定第一次出现,请先排序,然后应用分组作弊:
select *
from (
-- order by the "time" column descending to get the "most recent" row
select * from mytable order by time desc
) x
group by cid
关于MySQL 在每个唯一值第一次出现时选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12065931/
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我写了一个非常简单的rake任务来尝试找到这个问题的根源。namespace:foodotaskbar::environmentdoputs'RUNNING'endend当在控制台中执行rakefoo:bar时,输出为:RUNNINGRUNNING当我执行任何rake任务时会发生这种情况。有没有人遇到过这样的事情?编辑上面的rake任务就是写在那个.rake文件中的所有内容。这是当前正在使用的Rakefile。requireFile.expand_path('../config/application',__FILE__)OurApp::Application.load_tasks这里
-if!request.path_info.include?'A'%{:id=>'A'}"Text"-else"Text"“文本”写了两次。我怎样才能只写一次并同时检查path_info是否包含“A”? 最佳答案 有两种方法可以做到这一点。使用部分,或使用content_forblock:如果“文本”较长,或者是一个重要的子树,您可以将其提取到一个部分。这会使您的代码变干一点。在给出的示例中,这似乎有点矫枉过正。在这种情况下更好的方法是使用content_forblock,如下所示:-if!request.path_info.inc
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
在Ruby中,是否有一种简单的方法可以将n维数组中的每个元素乘以一个数字?这样:[1,2,3,4,5].multiplied_by2==[2,4,6,8,10]和[[1,2,3],[1,2,3]].multiplied_by2==[[2,4,6],[2,4,6]]?(很明显,我编写了multiplied_by函数以区别于*,它似乎连接了数组的多个副本,不幸的是这不是我需要的)。谢谢! 最佳答案 它的长格式等价物是:[1,2,3,4,5].collect{|n|n*2}其实并没有那么复杂。你总是可以使你的multiply_by方法:c