草庐IT

insert-into

全部标签

sql - 我可以始终使用 INSERT ....ON DUPLICATE UPDATE 进行简单的更新/插入吗?

(MYSQL)是否存在任何显着的性能差异,或其他不使用INSERT...ONDUPLICATEUPDATEsql更新PK/插入新内容的原因? 最佳答案 没有,没有。INSERTONDUPLICATEKEYUPDATE将定位记录并更新它就像一个简单的UPDATE会做。事实上这只是一个UPDATE,其次是INSERT应该UPDATE失败。INSERTONDUPLICATEKEYUPDATE可以是分组更新的更快替代方案(当您有一个每个键有多个记录的源表并且希望每个记录递增一次目标表时)。如果每个键的值很少,则此查询:INSERTINTOt

php: mysql_insert_id() 问题

php函数mysql_insert_id()在处理mysqldb中的INSERT查询后是否可以不返回任何结果?只是为了澄清。生产现场有一个cron执行的脚本。它包含一个为用户生成发票的周期。每次迭代都包含一个INSERT数据库查询和紧跟在查询之后的mysql_insert_id()操作-以获取生成的发票编号。在没有获取最后插入的数字的情况下执行了一组迭代。是否可能是数据库服务器负载过高或其他一些与php代码站点的问题无关的原因引起的?如有任何帮助,我们将不胜感激! 最佳答案 顺便说一下,我可以想到MySQL不会返回ID的几种情况:您

sql - mysql:有没有办法做一个 "INSERT INTO"2 表?

我有一个包含2列的表,我基本上想将其拆分为2个表:表A列:user_id、col1、col2新表:B:user_id,col1C:user_id,col2我想做的事:INSERTINTOB(user_id,col1)SELECTuser_id,col1fromA;INSERTINTOC(user_id,col2)SELECTuser_id,col2fromA;但我想在一个声明中做到这一点。table很大,所以我只想一次完成。有办法做到这一点吗?谢谢。 最佳答案 不可以,不能同时插入多个表。INSERT语法只允许一个表名。http:/

MySQL:如何在另一个 INSERT 中使用一个 INSERT 的结果

我需要在另一个插入中使用一个插入的结果键。MySQL可以吗? 最佳答案 mysql_insert_id返回您可以使用的最后插入记录的IDRetrievestheIDgeneratedforanAUTO_INCREMENTcolumnbythepreviousquery(usuallyINSERT). 关于MySQL:如何在另一个INSERT中使用一个INSERT的结果,我们在StackOverflow上找到一个类似的问题: https://stackoverf

MySQL:INSERT IGNORE 或 ON DUPLICATE KEY UPDATE 检查多个列而不是唯一列

如果存在包含特定值的行,我想插入行,如果不存在,则更新它。具体来说:user_id=5,user_zip=12345,distance=600列存在于数据库中。如果我尝试插入user_id=5,user_zip=12345,distance=700它应该只更新distance但我尝试插入user_id=5,user_zip=67890,distance=800它应该插入一个新行。我无法定义列user_zip和distance唯一,因此我可以使用重复键更新。 最佳答案 我认为您误解了ONDUPLICATEKEYUPDATE的工作原理。

mysql - INSERT SELECT ON DUPLICATE UPDATE 的 SQL 语法

我想对一个表中的行进行分组和聚合,然后插入到另一个表中,然后更新聚合值。它的SQL命令是什么?INSERTINTOtbdetail(detail,views)(SELECTdetail,SUM(views)ASviewsallFROMtbGROUPBYdetail)//ONDUPLICATEKEYUPDATEviews=views+viewsall 最佳答案 在MySQL中,当使用INSERT...SELECT语句时,您可以使用VALUES()引用SELECT语句的值之一功能:INSERTINTOtbdetail(detail,vi

mysql - 如果在 TRUNCATE 和 SELECT INTO 之间发送查询,则没有数据。使用 MySQL 数据库

使用MySQL数据库时,我在创建存储过程和事件计时器时遇到了问题。我创建了一个空表,通过SELECTINTO从另一个表中填充数据。在填充之前,我截断了当前数据。它用于仅跟踪从当前日期起2个月内发生的日志条目。这会将一个350k+的日志表变成大约750个,这确实加快了报告查询的速度。问题是,如果客户端恰好在TRUNCATE语句和SELECTINTO语句之间发送查询(考虑到EVENT设置为每1分钟运行一次,这很有可能),查询将不返回任何行...我已经研究过在运行此过程时锁定表上的读取,但在存储过程中不允许锁定。谁能想出一个(最好)不需要改造的解决方法?我真的需要在这里指出正确的方向。谢谢,

php - 也许 mysql_insert_id() 会返回意外的 id

也许我的问题很愚蠢,但关于mysql_insert_id()我想知道一件事。在php.net上是这样写的:RetrievestheIDgeneratedforanAUTO_INCREMENTcolumnbythepreviousquery(usuallyINSERT).如果在脚本到达使用mysql_insert_id()的行之前,另一个脚本在数据库中插入一些东西,这个函数的输出是什么?据我所知,它将返回最后插入的项目的ID(无论从哪里)。如果我是对的,我想知道如何避免这个问题,但是在执行插入查询时立即使用mysql_insert_id()(因为仍然有一点机会陷入“麻烦”)。

mysql - InnoDB 上的一个简单的 INSERT 查询花费太多

我有这个简单的查询:INSERTIGNOREINTObeststat(bestid,period,rawView)VALUES(4510724,201205,1)在table上:CREATETABLE`beststat`(`bestid`int(11)unsignedNOTNULL,`period`mediumint(8)unsignedNOTNULL,`view`mediumint(8)unsignedNOTNULLDEFAULT'0',`rawView`mediumint(8)unsignedNOTNULLDEFAULT'0',PRIMARYKEY(`bestid`,`period

MySQL : combining multiple integer fields into one string field?

假设我有一个包含数百万行的表,其中有3个整数变量:x、y和z,我在SELECT中针对它们进行搜索...WHEREx=aandy=bandz=c哪个会更快/更有效率?将3个字段组合成一个单独的字符串列“x_y_z”(例如1231_3242_6864)并为其建立索引针对三个整数创建3列索引? 最佳答案 不,这会更糟,字符串比较要慢得多。您最终可以(如果真的需要,我不推荐这样做)将3个整数合并为一个整数,但只有如果它们合适。但是,要解决您的索引,最简单的问题是在x、y和z上创建一个复合索引。