草庐IT

mysql命令位置DESC但如果位置="chef"则放在第一位

问题:mysqlorderpositionDESCbutputfirstifposition="chef"我想降序排列,但先放一些东西。它的语法如何? 最佳答案 ORDERBYCASEWHENposition="chef"THEN0ELSE1END,positionDESC添加更多WHEN条件可以让您优先考虑一些位置ORDERBYCASEWHENposition="chef"THEN0--firstWHENposition="dogsbody"THEN99--lastELSE1END,positionDESC

mysql - 如果只有值为空或 NULL,则更新 MySQL 表中的列

我之前应用过这个查询...它工作得很好并且得到了这个论坛的一位成员的回答UPDATEjos_jbjobs_jobseekeraINNERJOINjos_usersbONa.email=b.emailSETa.user_id=b.id现在我想使用相同的查询添加一个条件...即仅当a.user_id为空时才设置a.user_id=b.id,,我可以应用这个吗:ifa.user_id=''SETa.user_id=b.id;? 最佳答案 UPDATEjos_jbjobs_jobseekeraINNERJOINjos_usersbONa.e

mysql - 将字符串与之前有空格的字符串进行比较,而另一个则没有

如果我必须找到一个字符串名称"Akito"并且它位于表foo中,那么下面是正常过程,select*fromfoowhere`name='Akito'`我试着检查它的两个变体,工作正常select*fromfoowherename='Akito'没有正常工作select*fromfoowherename='Akito'谁能解释一下为什么第二个不起作用?提前致谢 最佳答案 CHAR类型用空字节将字符串填充到字段的长度(而VARCHAR添加定界符以指示字符串的结尾-因此忽略结尾处的额外数据(我的意思是空字节)),因此末尾有空格的比较将忽略

mysql - 如果不存在则插入,否则只需在 mysql 中选择

我有一个mysql表“alfa”,它将在一列中包含另一个表“beta”的主键。但是,如果找不到“beta”中的条目,我想在“beta”中插入值并在“alfa”中使用新键。我能以某种方式在一个查询中执行此操作吗?我目前有:INSERTINTOalfaSETc1=(SELECTidFROMbetaWHEREname='john');当表中存在'john'时它工作正常,否则失败。那么我是否可以改进它以让插入和选择新名称(如果它不存在)?id是自动递增的。我已经尝试查看IF,但还没有找到如何在SELECT之外使用IF,这可能吗?我知道我可以在多个查询中做到这一点,但我正在与一个远程数据库对话,

MySQL - 如果不存在则创建用户

CREATEUSERIFNOTEXISTS...创建新用户没有问题。现有用户返回该错误,但文档显示为CREATEUSERforMySQL>5.7.6支持。MySQL版本是Ver14.14Distrib5.7.11,forosx10.9(x86_64)usingEditLinewrapper示例CREATEUSERIFNOTEXISTS'foo'@'localhost'IDENTIFIEDBY'bar';--------------CREATEUSERIFNOTEXISTS'foo'@'localhost'IDENTIFIEDBY'bar'--------------QueryOK,0r

mysql - 如果 mysql 中存在则删除过程

您好,我正在尝试创建一个mysql脚本,我可以在需要更新数据库时运行它。该脚本创建一个表,然后执行一些存储过程。DELIMITER$$CREATETABLEIFNOTEXISTStbl_name(col1bigint(20)NOTNULLAUTO_INCREMENT,col2varchar(255)NOTNULL,col3varchar(64)NOTNULL,col4datetimeDEFAULTNULL,PRIMARYKEY(`col1`),UNIQUEKEYcol2(`col2`))ENGINE=InnoDBAUTO_INCREMENT=572DEFAULTCHARSET=utf8

mysql - DBI:如果第一个数据库不存在,则连接到另一个数据库

我正在尝试整理一些有两个用途的遗留代码。它使用DBI来创建一个数据库,然后使用DBI来连接到那个数据库。不幸的是,它对每个都使用了相同的代码。这意味着如果您创建了一个sales数据库,稍后在使用重新连接时,您必须显式调用$dbh->do('usesales')。这会导致各种问题,例如开发人员忘记这样做,或者数据库处理重新连接并忘记它在哪个数据库中。作为第一遍修复,我们尝试做的是让DBI::connect()方法使用HandleError重新连接到MySQL,如果数据库没有'存在,从而允许我们创建数据库。由于各种遗留原因(是的,我们都遇到过这种情况),尝试在connect()方法之外捕获

mysql - 如果存在则删除行

DELETEIFEXIST`#__menu`.*FROM`#__menu`LEFTJOIN`#__extensions`ON`#__extensions`.`name`='com_view'WHERE`#__menu`.`component_id`=`#__xtensions`.`extension_id`AND`#__menu`.`alias`='view-sites'AND`#__menu`.`path`='view-sites'AND`#__menu`.`title`='Viewsites';我的sql有什么问题?我认为问题出在IFEXIST中,但我不知道如何在行上使用它。

mysql - 如果未找到行,则返回默认值

我正在构建查询以从数据库中搜索多行,例如SELECT*FROMtable1WHEREcol1='012311'ORcol1='0123631'ORcol1='091233'ORcol1='092111'这里它返回前3个值,因为它们存在于表中,但它不返回最后一个值,因为它不在表中。那么,如果没有找到该值的行,我该如何在查询中设置我的默认值呢? 最佳答案 有几种方法,具体取决于数据集。这是一种方法:SELECT*,IFNULL((SELECTcol1FROMtable1WHEREcol1IN('012311','0123631','09

mysql - 如果最大查询返回 NULL,则返回值 'no row'

我有一张table。从那里我需要返回一个字段的最大值。如果该行为空或不满足某些条件,则查询将返回NULL。如果max返回NULL,我需要返回NOROWS。我该怎么做?我试过ISNULL,IF,COALESCE但是我无法得到我需要的东西。对不起,我错了。我的意思不是说“无行”这个词,更明确地说,如果它返回NULL,我不想获取任何行(不应返回任何行)。我再次为我的错误道歉。 最佳答案 你必须像这样使用HAVING:SELECTMAX(field)FROMyourtable--GROUPBYsomefiledsHAVINGMAX(fiel