草庐IT

update_columns

全部标签

mysql - 为什么 ON DUPLICATE KEY UPDATE 语句将值增加 2 而不是 1?

什么会导致ONDUPLICATEKEYUPDATE语句将值增加2而不是1,这是我使用的SQL:INSERTINTObanner_view(banner_id,date,views)VALUES('10',CURDATE(),'1')ONDUPLICATEKEYUPDATEviews=(views+1)这是数据库架构:CREATETABLE`banner_view`(`banner_id`int(11)UNSIGNEDNOTNULL,`date`dateNOTNULL,`views`int(10)UNSIGNEDNOTNULL,PRIMARYKEY(`banner_id`,`date`)

mysql - 我如何重写这个 MySQL 查询,这样它就不会抛出这个错误 : You can't specify target table 'crawlLog' for update in FROM clause?

我正在尝试从companies表中获取一个ID,但该ID还不在crawlLog表中。然后我需要将该companyId插入到crawlLog表中。我需要在一次调用中执行此操作,这样并行爬虫就不会在其他爬虫选择了url但尚未将其插入爬虫日志后提取相同的url。我不想因为生成的其他问题而锁定表。我从下面的两个查询中得到这个错误:Youcan'tspecifytargettable'crawlLog'forupdateinFROMclause这是我尝试做同样事情的两个查询。INSERTINTOcrawlLog(companyId,timeStartCrawling)VALUES((SELECT

java - MySQL Java JDBC : How to get the name of an auto-incremented column?

我正在开发一个使MySQL数据库的使用更简单的程序。现在我必须创建表单来添加和编辑数据库中表中的数据。问题是,当我创建表单时,我不想显示自动递增列的字段。我只需要列的名称来解决这个问题,但我不知道如何找到自动递增列的名称。我曾尝试查找答案,但我找到的只是有关查找自动生成key的信息。有人可以帮助我或指出正确的方向吗?感谢您的帮助。更新:谢谢您的帮助。根据以下答案,我想出了这个方法:publicVectorgetAutoIncrementedColumns(Stringtable){VectorcolumnNames=newVector();Connectionconnection;tr

mysql - UPDATE 查询更改了没有 WHERE 子句但有 AND 子句的行 - 为什么?

我运行了以下查询,它应该有一个where子句但我忘了添加它:UPDATEtblFormElementInstancesasfeiJOINtblFormElementsasfeusing(intFormElementId)SETfei.intStep=1ANDfei.intDivisionId=1ORfei.intDivisionIdISNULL);MySQL返回以下消息:--查询成功,影响42行(0.06秒)--匹配行数:94更改数:42警告数:0我原以为它会抛出一个语法错误,但它并没有。此外,该表中有96行,具有不同的intDivisionIds(即不仅仅是1或NULL),这表明一些

mysql - 错误 1054 : Column doesn't exist. .. 是吗?

下面是我的表结构和外键:SET@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,UNIQUE_CHECKS=0;SET@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0;SET@OLD_SQL_MODE=@@SQL_MODE,SQL_MODE='TRADITIONAL';CREATESCHEMAIFNOTEXISTS`homework9`DEFAULTCHARACTERSETlatin1COLLATElatin1_swedish_ci;USE`homework9`;-----------

mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file快速解决

mysql启动时报错:StartingMySQL…ERROR!TheserverquitwithoutupdatingPIDfile(/opt/mysql/data/mysql.pid)的解决方法出现问题的可能性1、可能是/opt/mysql/data/数据目录mysql用户没有权限(修改数据目录的权限)解决方法:给予权限,执行“chown-Rmysql.mysql/opt/mysql/data”然后重新启动mysqld2、可能进程里已经存在mysql进程解决方法:用命令“ps-ef|grepmysqld”查看是否有mysqld进程,如果有使用“kill-9进程号”杀死,然后重新启动mysql

mysql - ON DUPLICATE KEY UPDATE 导致外键约束错误

我搜索了StackOverflow,但找不到我的具体问题的答案。最近我非常喜欢用列表更新记录,使用“INSERTINTO...ONDUPLICATEKEYUPDATE”。但是,我遇到了以下查询的问题:INSERTINTOitens(prod_id,qtd)VALUES(410,1),(442,-1)ONDUPLICATEKEYUPDATEqtd=qtd+VALUES(qtd)这导致错误:“无法添加或更新子行:外键约束失败。”这是有问题的表的结构。“carrinho_id”是一个外键。我对我没有尝试使用外键做任何事情这一事实感到困惑。我只是想更新数量。CREATETABLEIFNOTEX

mysql - MySQL 查询的 PostgreSQL UPDATE 等价物

我有一个简单的MySQL查询,我想将其转换为PostgreSQL。3天后我终于退出了,因为我不明白这里出了什么问题:UPDATEwebUsersu,(SELECTIFNULL(count(s.id),0)ASid,p.associatedUserIdFROMpool_workerpLEFTJOINsharessONp.username=s.usernameWHEREs.our_result='Y'GROUPBYp.associatedUserId)aSETshares_this_round=a.idWHEREu.id=a.associatedUserId我试图转换它,但它说SET出错。

MySQL DELETE INSERT 而不是 UPDATE

有没有一种方法可以使用删除->插入而不是使用第一条记录中的字段进行更新?更新示例:TABLE---------ID(int)|VAL_1(VARCHAR)|VAL_2(VARCHAR)消息1:INSERTINTOTABLEVALUES(1,"firstmessage","someval");消息2:UPDATETABLESETID=2WHEREID=1相反,我需要删除第一条记录并插入一条新记录。有没有办法使用这样的消息:INSERTINTOTABLEVALUES(2,VAL_1fromRECORDWHEREID=1,VAL_2fromtherecordWHEREID=1);DELETE

mysql - INSERT ... ON DUPLICATE KEY UPDATE(要比较的两个键)

我想做的是增加第4列的值,如果它不存在,当一行有col0=valuecol0ANDcol2=valuecol2在表中。否则,我当然想插入该行。INSERTINTOtablename(col0,col1,col2,col3)VALUES(valuecol0,valuecol1,valuecol2,valuecol3)ONDUPLICATEKEYUPDATEcol3=col3+VALUES(col3);无论如何,我不知道应该如何在表中设置索引,我阅读了文档中的页面here但这没什么用。所以我尝试了所有四种可能的组合,但没有一个有效!我哪里失败了? 最佳答案