草庐IT

last_updated

全部标签

php - 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

我的表结构表:标记我的目标:我想用条件插入或更新多条记录我目前正在通过这个查询检查第一步SELECT*FROM`marks`WHERE`student`=115AND`param`=1第二步ifrecordsfoundbymatchingabovecriteriaijustupdaterecordbymynewvalueselseinsertnewrecordintomytable它会正常工作。但我想减少代码并将其优化为单个查询。它可能与否?我在MySQL文档INSERT...ONDUPLICATEKEYUPDATE上找到了这个。如果这是一个解决方案。如何通过查询实现?注意:我使用的是

mysql - "SELECT ... FOR UPDATE"不适用于 Hibernate 和 MySQL

我们有一个系统,我们必须在一个实体中使用悲观锁定。我们正在使用hibernate,所以我们使用LockMode.UPGRADE。但是,它不会锁定。表是InnoDB我们已检查锁定在数据库(5.0.32)中是否正常工作,所以这个错误http://bugs.mysql.com/bug.php?id=18184好像没问题。我们已检查数据源是否包含autoCommit=false参数。我们检查过SQLhibernate(版本3.2)生成的包含“FORUPDATE”。谢谢, 最佳答案 我遇到了非常相似的事情。我在Spring中使用@Transa

mysql - 当重复项是不同的唯一列时,如何防止 MySQL 在使用 ON DUPLICATE KEY UPDATE 时自动递增主键?

考虑下表:+-------------+------------------+------+-----+---------+----------------+|Field|Type|Null|Key|Default|Extra|+-------------+------------------+------+-----+---------+----------------+|vendor_id|int(10)unsigned|NO|PRI|NULL|auto_increment||vendor_name|varchar(100)|NO|UNI|NULL|||count|int(10)u

mysql - 如何在 MySQL UPDATE 语句中模拟 OFFSET?

我有一个MySQL数据库表,其中包含文章ID(主键)和文章标题。我想从表中删除重复的标题,但保留第一次出现的标题。我最初只是简单地查询了所有重复的标题:SELECTtitle,count(id)AScountFROMarticlesGROUPBYtitleHAVINGcount>1然后我使用foreach循环和这个命令将所有重复的标题替换为空白:UPDATEarticlesSETtitle=''WHEREtitle='$duplicate_title'我想更新articles表并替换所有重复的标题,除了第一个条目,基于文章IDASC,使用类似这样的东西。问题是OFFSET似乎在UPDA

php - ON DUPLICATE UPDATE 不适用于某些行

我在查询中使用了ONDUPLICATEUPDATE,一些结果没有存储它。我尝试了所有可能的方法,但那些仍然保持不变。这是数据库图片。那些NULL,就是没有存储成功的行;结果应该是1而不是NULL。if($remark){$query3="INSERTINTO`audit_section_remarkrecord`SETremark='$remark',form_details_subquestion_id='$form_details_subquestion_id',form_details_section_id='$form_details_section_id',audit_sec

mysql - 使用一个 SQL 查询进行 SELECT、UPDATE、DELETE?

我有一个递减值的小语句:UPDATEcart_itemsSETquantity=quantity-1WHEREcart_id={$cart_id}ANDid={$cart_item_id}但是如果该值在递减后变为0,SQL是否有可能删除该行?如果是这样,那么我想重新计算与该购物车匹配的行数:SELECTFROMcart_itemsWHEREcart_id={$cart_id}如果行数为零,我想从另一个表中删除该记录,如下所示:DELETEFROMcartWHEREid={$cart_id}目前似乎需要多个查询来执行此操作,但是否可以在单个SQL语句中完成所有操作?

mysql - 获取 INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 的 "Records"和 "Duplicates"计数

INSERT...SELECT...ONDUPLICATEKEYUPDATE返回作为affected-rows从(insertedcount)+(updatedcount)*2派生的数字,这是welldocumented在multipleplaces.但是在MySQLCommand-LineTool的输出中,我注意到了这个额外的信息:>INSERTINTO...->SELECT...FROM...->ONDUPLICATEKEYUPDATE...->;QueryOK,97rowsaffected(0.03sec)Records:2425Duplicates:28Warnings:0即,

mysql - SQL UPDATE 或 DELETE 如果重复

我正在尝试在我的数据库中运行3个查询:UPDATE`table`SET`rubriq`='77'WHERE`rubriq`='61';UPDATE`table`SET`rubriq`='77'WHERE`rubriq`='62';UPDATE`table`SET`rubriq`='77'WHERE`rubriq`='63';在table中,我有两列abonne和rubriq。Abonne是主键,两个是索引。如果在我的数据库中有例如:abonne|rubriq84|6184|6284|63当我运行3个查询时,第一个没有问题,但第二个出现错误:#1062-Duplicateentry'84

php - MySQL+PHP : getting last_id of multiple/composite primary key

我需要获取具有多列主键的表的最后插入的ID。那些表没有AUTOCOUNT列。我正在使用参数化查询(任意顺序)使用PHP(5.3)和MySQLi模块任意INSERTSQL查询。(任何格式)例如:Table:fooPrimarykey:[group_id,user_id]Query:INSERTINTOfoo(group_id,user_id,name,email)VALUES(?,?,?,?);Parameters:array(34,15,"John","john@example.com")结果:$last_id=$mysqli->insert_id?:getInsertedId();3

mysql - 将日期分类为 "yesterday"、 "last week"等

我有一个这样的表://mytable+----+------------+|id|date_time|+----+------------+|1|1464136759|--5daysago|2|1464436759|--2daysago|3|1464538248|--6hoursago+----+------------+--^thesearebasedoncurrenttimewhichis1464561158我也有这个问题:SELECTid,CASEDATE(FROM_UNIXTIME(date_time))WHENCURDATE()THEN'today'WHENCURDATE()