草庐IT

GROUP_BY

全部标签

mysql - 使用 ORDER BY 和 LIMIT 查询非常慢

我的查询非常慢,因为使用了ORDERBY。现在我明白了为什么它很慢,但我不知道如何让它更快。该表大约有900.000条记录。(慢的原因)SELECTSQL_NO_CACHEid,nameFROMuserswhereis_provider=0ANDactivated_atISNOTNULLANDis_ngo=0ANDdeleted_atisNULLANDis_cancelled=0ORDERBYnameLIMIT60000,90;我使用限制是因为我使用分页。SQL_NO_CACHE因为我不想使用缓存进行测试。这个查询大约需要60秒,这太长了。这是一个后台任务,所以如果我能在5秒内重新使用

mysql - rails 在 find_by_sql 中使用 sql 变量

我有这个问题:SET@current_group=NULL;SET@current_count=0;SELECTuser_id,MIN(created_at)ascreated_at,CASEWHEN@current_group=user_idTHEN@current_countWHEN@current_group:=user_idTHEN@current_count:=@current_count+1ENDAScFROMnotifiesGROUPBYuser_id,cORDERBYiddescLIMIT0,10如果我启动它,它会起作用但是如果我把它放在一个find_by_sql方法中

MySQL 查询 - 使用 ORDER BY rand( ) 强制区分大小写

是否可以强制查询区分大小写?我的声音是这样的:"SELECTg_pathFROMglyphsWHEREg_glyph=:g_glyphORDERBYrand()"如果g_glyph=r,结果可以是R或r,这不是我所期望的。我正在寻找区分大小写的返回。我用谷歌搜索了我的问题并找到了这个解决方案:/*Case-sensitivesortindescendingorder.Inthisquery,ProductNameissortedincase-sensitivedescendingorder.*/SELECTProductID,ProductName,UnitsInStockFROMpr

mysql - SQL : a GROUP BY issue in MySQL

这是数据库表╔════╦═════════════╦══════════════════╦═══════╗║id║customer_id║last_seen║param║╠════╬═════════════╬══════════════════╬═══════╣║1║12345║2012-08-0112:00║1║║2║22345║2012-08-0112:00║1║║3║32345║2012-08-0112:00║1║║4║42345║2012-08-0112:00║1║║5║52345║2012-08-0112:00║1║║6║12345║2012-09-0112:00║2║║7

mysql - 按 order BY 指定顺序

这是一个简单的问题,但我已经用谷歌搜索了很长时间,但没有结果。SELECT*FROM`target`WHERE`week_id`=23and`ini_id`=2ORDERBY`region_id`当我订购此查询时,它是ASC或DESC。我可以为region_id指定一个序列,例如(5,6,7,1,2,3,4) 最佳答案 您可以为此使用FIELD:SELECT*FROM`target`WHERE`week_id`=23and`ini_id`=2ORDERBYFIELD(`region_id`,5,6,7,1,2,3,4)

mysql - 在表上运行查询时 group_concat 被切断

我有一个看起来像这样的表:此表包含343行。我正在尝试对其运行此查询:createtablenewTest2selectfunction_name,service_name,min(concurrency),substring_index(group_concat(dateorderbyconcurrency),',',1)asminDate,max(concurrency),substring_index(group_concat(dateorderbyconcurrencydesc),',',1)asmaxDate,avg(concurrency)fromconc_intermid

mysql - 自然排序 SQL ORDER BY

任何人都可以帮助我了解我应该在ORDERBY语句中附加什么以自然地对这些值进行排序:11022220405-10920405-10120404-100XZD理想情况下,我想要以下内容:12102220404-10020405-10120405-109DXZ我目前正在使用:ORDERBYt.property,l.unit_number值是l.unit_number我试过l.unit_number*1和l.unit_number+0但它们没有用。我是否应该执行某种ORDER条件,例如CaseWhenIsNumeric(l.unit_number)?谢谢。 最佳答

mysql - 在此查询中,如何在 GROUP BY 之前执行 SELECT?

我在看SQL的执行顺序,发现是:FROM,WHERE,GROUPBY,HAVING,SELECT,ORDERBY但在下面的查询中,“_index”用于GROUPBY,这怎么可能?SELECTCOUNT(ab.id)AScount,COUNT(ab.id)/365.24ASaverage,IF((SUBSTR(ab.begin,1,7)='2014-08'),'2014-08-1800:00:00.0CEST',IF((SUBSTR(ab.begin,1,7)='2014-09'),'2014-09-1800:00:00.0CEST',IF((SUBSTR(ab.begin,1,7)='

MySQL GROUP_CONCAT() 对所有行进行分组

我有以下查询:selectcard.idasid,photo.imageasphotofromcardleftouterjoincard_imageasphotoon(photo.card=card.id)返回+----+-------+|id|photo|+----+-------+|1|2||1|3||1|4||2|5||2|6|+----+-------+如果我将photo.imageasphoto更改为group_concat(photo.image)asphotos我会得到以下结果+----+---------------+|id|photo|+----+----------

MySql GROUP_CONCAT 与 GROUP BY 每组第 n 行

SQLfiddle:http://sqlfiddle.com/#!9/e7f72/2假设一个名为testt的表中有10条记录(id不是null自动递增)。如果我要这样做SELECTGROUP_CONCAT(id)FROMtestt我希望结果看起来像1,2,3,4,5,6,7,8,9,10我怎样才能让结果看起来像这样:1,23,45,67,89,10 最佳答案 您需要按id的函数进行分组。像这样:selectgroup_concat(idorderbyid)fromtesttgroupbyfloor((id-1)/2)