草庐IT

case-statement

全部标签

mysql - 什么更好 : joins or multiple sub-select statements as part of one query

性能方面,什么更好?如果我的查询中有3或4个join语句或使用嵌入式select语句作为一个查询的一部分从我的数据库中提取相同的信息? 最佳答案 我会说联接更好,因为:它们更易于阅读。您可以更好地控制是要执行内部、左/右外部联接还是完全外部联接不能轻易滥用连接语句来创建可憎的查询使用联接,查询优化器可以更容易创建快速查询(如果内部选择很简单,结果可能相同,但对于更复杂的东西,联接会起作用更好)。嵌入的select只能模拟left/rightouterjoin。有时您无法使用联接来做某事,在这种情况下(并且只有在那时)您将不得不求助于

mysql - MYSQL 上的 SELECT CASE 和 CALL 过程

我正在尝试执行以下操作SELECTCASE@stWHEN'emp'THENCALLempata(NEW.eqvis)WHEN'loc'THENCALLpierde(NEW.eqvis)WHEN'vis'THENCALLgana(NEW.eqvis)ENDINTO@dat;但我明白了:[Err]1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'CALLempata(NEW.eqvis)WHEN'loc'THEN

带有限制参数的 MySql 存储过程给出 err.no : 1064 when we use CONCAT statement

我们有一个很长的sql过程,它接受limit&amount(limitCount)参数。因此,我们使用concat语句来连接多个查询。当我们尝试运行它时,调用此过程会给出err.no1064。编辑:根据评论,我添加了整个代码。CREATEPROCEDUREgetProfileTasks(INp_id1INT,INp_id2INT,INlimitStartINT,INlimitCountINT)BEGINSET@SQL=CONCAT('SELECTP.access_typeINTO@privacyFROMProfilePWHEREP.profile_id=',p_id2,';IF(',p

mysql - MySQL 中的 IF 和 Case 语句

如果5大于2,我想选择*,如果为假,则选择特定列。我哪里错了?SELECTIF(5>2,*,column_x),CASEwhereheard_nameWHEN'Newspaper'THEN'a'WHEN'TV'THEN'b'WHEN'Internet'THEN'c'ELSE'-'ENDASresultFROMwhereheard;感谢您对上述问题的回答。这是我正在使用的以下示例存储过程:DELIMITER$$USE`registration`$$DROPPROCEDUREIFEXISTS`test2`$$CREATEDEFINER=`root`@`localhost`PROCEDURE

mysql - 在带有 LIKE 的 CASE 语句中使用 GROUP_CONCAT 列别名

这里的想法是GROUP_CONCAT从连接到option_stock和options表的stock表中编译一个选项代码列表,按股票id分组。示例行是这样的:NameOptionsTransmission'HoldenCommodore''111,145,166,188''Auto'这个View按原样工作,但我不禁觉得有更优雅的解决方案?CREATEVIEWstock_viewAS(selects.descriptionASName,group_concat(o.option_codeorderbyo.option_codeASCseparator',')ASOptions,(caseW

mysql - 代码点火器 : how to avoid db query returns last statement as key value

我在codeigniter中查询结果之前执行了几个查询:$sql_drop_temptable="...blabla...";$sql_prepare="itcreatesatemporarytable;whereIsumuplater...";$sql_summe="selectsec_to_time(sum(time_to_sec(summands)))fromworkday;";$query=$this->db->query($sql_drop_temptable);$query=$this->db->query($sql_prepare);$query=$this->db->q

php - Sql-满足条件时退出CASE语句

以下CASE语句更新BET1、BET2、BET3和BET4同时ID=10。$S1=32$sql="UPDATETIMER-BOARD1setBET1=casewhenBET1ISNULLTHEN$S1elseBET1end,BET2=casewhenBET2ISNULLTHEN$S1elseBET2end,BET3=casewhenBET3ISNULLTHEN$S1elseBET3end,BET4=casewhenBET4ISNULLTHEN$S1elseBET4endWHEREID=10";当我运行php页面时,我有BET1=32、BET2=32、BET3=32、BET4=32。我想

mysql - 服务器上的 SQL : Saving Query Statements to a File

我正在尝试做的事情:保存MySQL用来填充我网站数据的确切查询。为此,我想将从我的数据库请求的ex:'SELECT*FROMTableWHEREX>2'保存到服务器上的文本文件中。为了避免“你为什么需要这个?”问题,数据库类(class)的一个项目要求我研究数据库是如何收集数据的,还有什么比我自己的网站更好的地方?我尝试过的:我查看了SPOOL命令,但根据我收集到的信息,这仅适用于Oracle系统。查看Tee命令,我可以将查询结果附加到文件中。为什么我的尝试没有成功:解决方案不能通过SQL查询,因为我无法精确控制数据库的填充方式。数据库从名为IMDB-Connector的连接器创建,并

MySQL CASE WHEN where 子句导致失败

我有一个复杂的查询,它在多个列中进行多次匹配,然后按相关性排序。一切正常,直到我添加WHERE'rank'>0这会返回一个空的结果集。如果我删除“WHERE”语句,那么我可以在顶部看到所有匹配度最高的结果。有人能帮我算出“WHERE”吗:-D我错了!!SELECT*,CASEWHENcompanyName='gfdgfs'THEN2ELSE0END+CASEWHENcompanyNameLIKE'%gfdgfs%'THEN1ELSE0END+CASEWHENcompanyName='potato'THEN2ELSE0END+CASEWHENcompanyNameLIKE'%potato

mysql - ORDER BY 与 CASE MySQL

我有一个“积分榜”查询,它显示了我所在联赛的统计数据。我试图根据一些条件对查询进行排序。如果球队积分排名1-25,则按胜场、积分排序如果球队排名在前25名之外(积分第26至42名),则按积分排序。我能描述的最好方式是它应该像两个表一样工作。排名(1-25)的团队应该放在一起排序,排名(26-42)的团队应该放在一起排序。这是我的查询。SELECTm.TeamASteam,SUM(r.points)ASpoints,SUM(CASEWHENrank=1THEN1ELSE0END)ASWins,SUM(CASEWHENrank25THENpointsENDDESC,pointsDESC;由