草庐IT

if-cases

全部标签

带有if语句的MySQL存储过程

我在MySQL中有以下存储过程SELECT*FROMrewardsLEFTJOINtasksONtasks.id=rewards.task_idANDrewards.received_at=received_DateWHEREtasks.kid_id=kid_IdORDERBYtasks.idASC;存储过程有2个(IN)输入,kid_Id(整数)和received_Date(日期),并且工作正常。问题:我想要的是,如果received_Date是NULL那么我想查看所有日期,这可能吗?换句话说:ANDrewards.received_at=received_Date只有在我通过rec

Mysql Bulk update performance improvements for (when.. case)

我有一个这样的查询,它应该在每个MySQL操作之后执行。由于数据增加,此查询现在正在减慢页面加载速度,我做了正确索引等所有操作,但查询仍然相对较慢。还有其他方法可以执行这些检查吗?$query="UPDATE{$tprefix}wh_profgSETstatus=CASEWHENbatchnoin(selectbatchnofrom{$tprefix}wh_profulldetailwhereremainingdays0andremainingdays>0)THEN'quarantine'WHENQC='approved'andQA='approved'andstatus!='empt

mysql - 如何在 MySQL CASE 表达式中使用 "OR"条件?

我有一个包含CASE表达式语句的过程,如下所示:BEGIN....WHILEcounter当我调用上述过程时,带有OR语句的情况要么被完全跳过,要么只匹配列表中的第一项。我做错了什么? 最佳答案 CASErankingWHEN1THEN'alpha'WHEN2THEN'beta'WHEN10THEN'charlie'ELSE'zelta'ENDCASE;您可以使用WHEN具有的表达式之一,但不能混合使用它们。1)WHENwhen_表达式是使用简单CASE格式时将input_expression与之进行比较的简单表达式。when_ex

mysql - mysql中CASE和IF有什么区别

我发现了非常奇怪的MySQL行为:我有一个带有变音字母的字符串,我在上面运行了一些IF表达式。像这样的东西:IF(length(field)"))它工作正常。但是,如果我用CASE替换这个if,那么结果会在第一个unlaut字母处被截断!CASEWHENlength(field)")END另外,我注意到只有当查询中也有GROUPBY部分时才会发生这种情况。我无法理解CASE和IF之间的区别-从逻辑的角度来看,两者应该返回完全相同的结果。有人知道为什么这两个命令有区别吗? 最佳答案 "IF是单个fork,"CASE"可以是多个如果您有

mysql - MySQL 中 IF 语句的正确语法是什么?

我有一个小而简单的MySQL代码。但是每当我运行它时,我都会收到错误#1064。你能告诉我我的错误是什么吗?IF((SELECTCOUNT(id)FROMtbl_states)>0)THENBEGINSELECT*FROMtbl_cities;ENDENDIF我还使用了一些其他条件,例如下面的条件,但我再次遇到错误。IF(1=1)THENBEGINSELECT*FROMtbl_cities;ENDENDIF我真正想做的是这样的:IF((SELECTCOUNT(id)FROMtbl_states)>0)THENBEGINUPDATE...ENDELSEBEGININSERT...ENDE

php - 在 mysql ORDER BY 中使用 case

我有一个表格,其中包含:项目、排名分数和用户对它的投票数。为简单起见:id、ranks、votes。我正在尝试运行一个查询,该查询将项目从最高排名得分排序到最低得分,除非投票数=0。因为我有新项目的基本排名分数,所以无法对我的排名进行排序。我尝试了以下方法以及其他一些排列方式:$list=$dbh->query('SELECT*FROMranksORDERBYvotesdesc,ratingdesccasewhenmin(votes)=0elseratingdesc');无济于事,看了之后:ConditionalsortinginMySQL和ConditionalsortinginMy

mysql - 有什么理由仍然对数据库表和列使用 snake case 吗?

当我开始设计数据库时,出于某种原因,建议您始终对表和列使用蛇形大小写(my_table_name)。我认为这在MySQL中尤其如此。原因是在某些情况下资本化会丢失或强制执行。快进到今天,我看到很多人使用我更喜欢的Pascal大小写(“MyTableName”)。有什么理由仍然对表名和列名使用蛇形命名法吗?是否存在任何可能丢失或强制大写的情况(例如,如果更改数据库引擎、操作系统等)? 最佳答案 SQL不区分大小写。许多数据库在创建表时将名称折叠为小写,因此会丢失大写。在名称中保留“单词”的唯一可移植方法是使用蛇形大小写。

mysql - MySQL 的 IF() 函数的标准方法

我找到了MySQL'sIF()function非常有用,它为我提供了一种执行条件聚合函数的有效方法,如下所示:SELECTSUM(IF(`something`='a',`something_weight`,0))AS`A`,SUM(`something_weight`)AS`All`FROM...据我了解,此功能是MySQL的一个特性,在使用SQL的数据库中一般不可用。是否有更标准的方法在数据库方面实现此功能? 最佳答案 我不是sql大师,而是case语句http://dev.mysql.com/doc/refman/5.0/en/

mysql - SQL中where子句中的IF语句

我正在开发一个日历应用程序。它以两种格式存储时间。该表具有以下列title、startDate、startTime。如果用户提供开始时间加上开始日期。数据库在startTime列中存储UNIX时间戳(自UNIXepok以来的秒数),而startDate为NULL。如果用户只提供开始日期,数据库将以nnnn-mm-dd格式存储日期到startDate中,将NULL格式存储到´startTime`.我有这个数据库结构,因为它更容易显示世界各地的时间,因为不同的时区有不同的夏令时。我想选择在指定日期之后发生的事件。客户端计算机向服务器提供当天开始的UNIX时间戳($unix)和格式为nnnn

mysql - MYSQL CASE WHEN语句如何写多个查询条件?

我知道像PHP这样的语言有switchcase控制结构,支持在单个case语句中进行多次验证,例如,Switch$x{case1,2,3:$a=0;break;case5,6:$a=1;break;}同样可以在MYSQL中完成吗?我在下面尝试过,但确实没有用:(CASEvc_shapeWHEN('02'OR'51')THENSETdc_square_1=dc_square_1+dc_row_total;WHEN('06'OR'30'OR83)THENSETdc_square_2=dc_square_2+dc_row_total;..........ELSEBEGINEND;ENDCAS