草庐IT

mysql - 仅当表为空时才执行 mysql insert

在这个问题之后,我一直在尝试模仿正确的答案,以便仅在表为空时才在表中插入数据。ExecuteINSERTiftableisempty?这是我的代码:INSERTINTO`statuses`SELECT('Something','Somethingelse',123),('Something','Somethingelse',234)WHERENOTEXISTS(SELECT*FROM`statuses`);但是如果表是空的,我不会添加元素,而是得到:#1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyo

mysql - SQL查询,仅当列不为空时才选择,否则不选择

这就是我想要做的SELECT`a`,`b`,`c`FROM`tbl`WHERE`a`ISNOTNULLOR`b`ISNOTNULLOR`c`ISNOTNULLWHEREid=?如果a和c为null而b不是,我仍然会收到此结果集\abc____________NULLvalueNULL但我只希望它返回这个b____value提前致谢! 最佳答案 如果您希望在有两个非空列时获得包含两列的行,如果只有一个列则获得1列,则必须动态创建查询。如果您希望始终有1列,其中每行包含一个非空值,您可以使用联合来实现。SELECTaFROMtblWHE

仅当存在字符时才选择 MySQL 子字符串

A有一个由自动化流程填充的表格,其中包含来自第三方提要的数千家公司名称。大多数公司名称只是名称,但有些公司名称后面有一个连字符。我正在尝试做一个只会返回公司名称的选择。现在我有两个问题:SELECTDISTINCTvendorFROMfeed_data;SELECTDISTINCTSUBSTRING(vendor,1,LOCATE('-',vendor))FROMfeed_data;第一个查询提供了所有信息,第二个查询只提供了带有连字符的公司名称。我正在寻找一种同时获得两者的方法。示例数据:vendor:AmericanWidgetsBravoWidgets-Thebestwidget

MySQL:仅当第一个查询未返回结果时才执行第二个查询

我需要这个查询:SELECT*FROMbestWHEREbest='value'ANDlang='x'UNIONSELECT*FROMbestWHEREbest='value'ANDlang='custom'LIMIT1基本上我只需要一条记录,其中best='value'和lang='x',如果找不到这条记录,那么我需要使用lang=执行第二个查询'自定义'MySQL是否足够聪明,能够理解考虑到存在LIMIT1,当union的第一个查询返回一些东西时,他不需要执行第二个查询?我可以做一个查询:SELECT*FROMbestWHEREbest='value'ANDlangIN('x','

mysql - 按字段排序,仅当它存在时

我正在尝试获取所有用户,并通过另一个表上的字段对他们进行排序,但是该字段并不总是存在?用户-保留用户UserMeta-保存元数据,特别是“重量”,这是我试图订购的。一个更具体的解决方案是自动为它们定义一个默认权重,但是无论如何我可以让它在没有的情况下工作吗?当前工作查询:SELECT*FROMusersu,usermetaumWHEREu.ID=um.IDANDu.nameLIKE'%search_terms%';部分订单丢失,任何/所有帮助将不胜感激! 最佳答案 如果您在表(u.ID=um.ID)之间有一个关键关系并且您想要列出所

mysql - 仅当记录不存在时才插入查询

在我的表中有两个字段:v_id和ip_address。仅当IP地址尚不存在时,我才想向该表中插入一些数据。在Google之后,我遇到了INSERTIGNOREINTO语句,这是我的代码:publicfunctionupdate_visits($ip_address){$sql='INSERTIGNOREINTO`24h_visits`(ip_address)VALUES(?)';if($this->db->query($sql,array($ip_address))){returnTRUE;}returnFALSE;}它运行良好并且没有错误,但仍然会生成重复的行,即使将相同的IP作为参

仅当行不存在时 MySQL INSERT,否则选择重复行

我正在寻找一个语句,它会尝试将一行插入表中,但如果遇到重复行,则返回重复行的主键。表中一个字段是自增主键,另一个是唯一的。 最佳答案 至少在理论上,这应该对您有用:首先扩展您的表以增加一个tinyint类型的虚拟列。然后你可以在插入/更新时使用下面的查询:INSERTINTOyourtable(a,b)VALUES(1,2)ONDUPLICATEKEYUPDATEid=LAST_INSERT_ID(id),dummy=NOTdummy(我在这里假设列a具有唯一索引并且存在a=1的行。)然后您可以通过以下方式获取新行的ID(在插入的情

php - 仅当行少于 5 时才选择 MYSQL

我有一个名为iv6_posts的表我只想选择记录少于5行的记录它应该在一个查询中像这样:selectIF((selectcount(*)fromiv6_posts) 最佳答案 你不能用普通的WHERE实现它,因为COUNT()是一个组函数,你不能使用普通的HAVING因为它将行分组。相反,您必须评估不同查询中的总计数并将其与例如CROSSJOIN相结合:SELECTiv6_posts.*FROMiv6_postsCROSSJOIN(SELECTCOUNT(1)AScFROMiv6_posts)ASinitWHEREc检查fiddle

mysql - 仅当 mysql 中所有值都为真时才连接

以下是我用来连接siretagprefix和siretagsec的查询CONCAT('TZN',`adggtnz`.`reg04_rpt_animreg`.`siretagprefix`,`adggtnz`.`reg04_rpt_animreg`.`siretagsec`)AS`siretagid`,当siretagprefix和siretagsec的值为null时的查询结果,我得到TZN作为结果。如何仅在所有值都为真时连接。 最佳答案 您可以使用CASE来检查您的列值CASEWHEN`adggtnz`.`reg04_rpt_ani

mysql - SQL 查询改进 - 仅当 A>B 时才选择 X,其中 A 和 B 值在变量的范围内

我正在练习我的SQL技能并尝试解决一些练习。问题:对于同一评论者对同一部电影评分两次(存储在评分表)并给予更高评分(rating.stars)第二次,返回评论者姓名(保存在评论者表)和电影名称(保存在电影表)。SELECTr.NAMEASreviewer,m.TitleASmovietitleFROMratingraLEFTJOINmoviemONm.mID=ra.mIDLEFTJOINreviewerrONr.rID=ra.rIDLEFTJOIN(SELECTra.rID,ra.mID,MAX(ra.RatingDate)ASMaxDate,MIN(ra.RatingDate)ASM