草庐IT

COALESCE

全部标签

mysql - 在连接表列上优化 ORDER BY COALESCE

已编辑:按要求添加完整查询。本质上,我有一张帖子表,一对多地链接到一张转发表,类似于Twitter。我想加载按转发时间(如果存在)或原始帖子时间排序的帖子。但是,使用单个查询的排序过程非常慢(可能是因为COALESCE(x,y)没有充分利用MySQL索引)。两个相关表上的时间列都已编入索引。我的查询看起来像这样。SELECT*FROMPostpLEFTJOINp.repostsON...WHERE...ORDERBYCOALESCE(r.time,p.time)LIMIT0,10更准确地说(伪)因为我使用的是DAL:SELECT*FROMPostpLEFTJOINp.repostsre

mysql - 复杂的MySQL查询错误结果

我正在尝试构建复杂的mysql查询,但它返回了错误的结果...SELECTb.nameASbatch_name,b.idASbatch_id,COUNT(DISTINCTs.id)AStotal_students,COALESCE(SUM(s.open_bal),0)ASopen_balance,SUM(COALESCE(i.reg_fee,0)+COALESCE(i.tut_fee,0)+COALESCE(i.other_fee,0))ASgross_fee,SUM(COALESCE(i.discount,0))ASdiscount,COALESCE(SUM(s.open_bal),

如果数据集为空,MySQL 返回默认值

我正在尝试使用以下方法查询数据库:SELECTcoalesce(value,"NA")asvalueFROMmytableFORCEINDEX(chrs)FORCEINDEX(sites)WHEREchrom=1ANDsite=120如果我在数据库中有一个条目,这个查询就可以正常工作。但是,如果未找到该条目,它会返回一个空数据集。我想更改查询,以便如果在数据库表中找不到它,它仍会返回某种值(对于“值”)而不是空数据集 最佳答案 你加一个UNION怎么样?(SELECTcoalesce(value,"NA")asvalueFROMmy

MYSQL 5.7.20 - 按合并列顺序左连接 - 非常奇怪的行为

我遇到了一个非常奇怪的问题,希望您能向我解释一下。我想要做的是根据子查询中的合并列对结果集进行排序。让我解释得更好。我有两个表:CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(255)COLLATEutf8_unicode_ciNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;CREATETABLE`user_favorites_user`(`source_user_id`int(11)NOTN

mysql - 使用 coalesce 在查询中设置变量的初始值

对不起,如果已经有人问过这个问题,但是搜索coalesce会得到一堆对我没有帮助的结果......在mysql中,我尝试使用coalesce为变量设置初始值,该变量是使用依赖于现有值的表达式设置的。我真的很想用一个语句来完成它,但是我遇到了一个问题,当变量为null时从coalesce返回的值似乎没有“固定”并且我每次都得到初始值。奇怪的是,如果我将变量最初设置为null,它会按预期工作。考虑这个查询:select@y:=coalesce(@y+1,5)fromtablelimit5;它返回:55555但是这个:set@z=null;select@z:=coalesce(@z+1,5)

mysql - 如何最佳地在 WHERE 子句中使用 COALESCE()?

这是我的查询:selectcoalesce(qa2.subject,qa.subject)asquestion_subject,qa.body,(selectcount(*)fromviewed_itemsviwherecoalesce(qa.related,qa.id)=vi.question_id)astotal_question_viewedfromquestions_and_answersqaleftjoinquestions_and_answersqa2onqa.related=qa.idwherebodylike':entry';如您所知,MySQL优化器永远不能在coal

sql - 为什么在sql语句中使用COALESCE()?

我正在重构一些旧代码并偶然发现了这个命名查询(它在mysql之上使用hibernate):deleteFfromfooFinnerjoinuserDUonF.user_id=DU.idwhere(COALESCE(:userAlternateId,null)isnullorDU.alternate_idlike:userAlternateId)and(COALESCE(:fooId,null)isnullorF.foo_idlike:fooId)and((COALESCE(:fromUpdated,null)isnullorF.updated_at>=:fromUpdated)and(

mysql - 结合 CONCAT() 和 COALESCE() 在 MySQL 中生成 JSON

我正在从函数构建小的JSONblock,我需要像这样在引用非空值时过滤空值(MySQL5.0,因此没有内置的JSON函数):COALESCE(CONCAT('[',group_concat(CONCAT('{"key":"',REPLACE(a.val,'"','\\"'),'"}')SEPARATOR','),']'),'null')ASjsonval它输出如下内容(这是一个要嵌入到完整JSONblock中的值):值:[{"key":"foo"},{"key":"bar"},{"key":"baz"}]没有值(NULL):null空字符串:[{"key":""}]对于每个a.val,

mysql - MySQL返回结果为NULL时选择默认值

以下查询运行良好,但我想输入选项,如果返回的电子邮件为NULL,则我输入“example@google.com”或类似内容。我已经阅读了一些函数,例如COALESCE(EMAIL,"example@google.com"),但我不确定该函数在脚本中的位置。您能否指导我应该在哪里注入(inject)该功能,以及我是否朝着正确的方向前进?谢谢你。SELECTLCASE(LOGIN_NAME)asuniqueid,CONCAT('sha-512:',PASSWD)aspassword,REPLACE(CONTACT_NAME,'"','')asname,\CONCAT('unit,',\MA

MySQL,多行分隔字段

我有一个MySQL表,其中包含如下字段和数据;PartNumberPrioritySupNamea10Onea20Onea21Twoa30Onea41Twoa52Three我正在尝试创建一个View,其中将多行的部分组合成一行,并组合成单独的字段,例如理想情况下是这样;PartNumberSup1Sup2Sup3a1OneNULLNULLa2OneTwoNULLa3OneNULLNULLa4TwoNULLNULLa5ThreeNULLNULL或者我可以忍受这个PartNumberSup1Sup2Sup3a1OneNULLNULLa2OneTwoNULLa3OneNULLNULLa4NU