草庐IT

mysql - 如何重新计算 GROUP 上的字段

我有一张tablef1|f2|fk1|0|1001|1|2001|2|3001|3|4002|0|3002|1|4002|2|500其中(f1,f2)是PK,fk是外键。fk的值不多,大约20。f2永远不会超过3。但是,有很多(f1,f2)对。(f1,fk)是UNIQUE。现在,假设我们将100和200映射到A,将300和400映射到B,将500映射到C—​​—这个映射是给定的。我们希望(f1_new,fk_mapped)保持UNIQUE。到目前为止,这是大致解决的INSERTINTOmapped(f1_new,f2_new,fk_new)SELECTf1,MIN(f2),CASEfk

php - MySql INSERT 与 PHP file_put_contents

我有一个快速增长、写入量大的PHP/MySql应用程序,它以每秒十几行的速度将新行插入到一个包含几百万行的INNODB表中。我开始使用实时INSERT语句,然后转移到PHP的file_put_contents将条目写入文件,并使用LOADDATAINFILE将数据导入数据库。哪种方法更好?有没有我应该考虑的替代方案?我如何期望这两种方法在未来处理碰撞和增加的负载?谢谢! 最佳答案 将LOADDATAINFILE视为插入数据的批处理方法。它消除了为每个语句启动插入查询的开销,因此速度要快得多。但是,在处理错误时您会失去一些控制权。与文

mysql - GROUP BY 与 INSERT IGNORE

嗨!我需要在mysql(5.1)上扫描一个非常大的表,表格大致是这样的:CREATETABLE`big_table`(`id`BIGINT(11)NOTNULLAUTO_INCREMENT,`main_id`INT(11)DEFAULTNULL,`key`VARCHAR(20)NOTNULL,PRIMARYKEY(`id`),KEY`main_id_key`(`main_id`,`key`),)ENGINE=INNODBAUTO_INCREMENT=2315678197DEFAULTCHARSET=utf8我需要将main_id+keys的所有唯一值放入一个新表中。使用以下查询需要花费

mysql - 触发以跟踪 MySQL 数据库中的更改

我似乎无法创建触发器。我已经尝试了以下两种更新方式。我不断收到插入语句的语法错误。我搜索了过去4小时的论坛和网络搜索,没有任何变化。这里有更多的代码,它基本上是重复的。任何帮助,将不胜感激。谢谢你。我正在运行MySQL5.0并以管理员/Root身份通过phpMyAdmin2.8.2.4进行访问。尝试1(在所有字段和名称上使用和不使用引号)CREATETRIGGERinsert_classesAFTERinsertONClassesFOREACHROWBEGINinsertintoinsert_tracking_classes(classID,Title,classDesc,Catego

mysql - 黑洞引擎的创意用途

根据文档:http://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-engine.html黑洞存储引擎可用于诊断和将二进制日志卸载到另一台机器,而无需将数据库存储在该机器上。您还能想出该引擎的其他创意用途吗? 最佳答案 使用触发器找到了一个:如果您有一系列复杂的插入或更新需要在事务中发生,您可以在应用程序代码中执行这些操作,或者您可以创建一个“大”blackhole表,其中包含足够多的行来容纳所有值。然后创建一个触发器,例如:DELIMITER$$CREATETRIGGERai

php - MYSQL INSERT 中的德语变音符号

我的mysql插入语句有问题。我有一个将utf-8字符正确提交到插入文件的表单(我已经检查了POST变量)。现在,当我查看数据库中的INSERT时,没有变音符号,只有问号。错误必须在插入语句之前。如果我从我的数据库中输出(手动输入)内容,则会正确显示变音符号。//echo$_POST["title"];//outputscorrectlywithspecialchars:"Somegermantitlewithumlauteäöü"mysql_query("INSERTINTOvideos(youtube_hash,title,description,category,created)

MYSQL INSERT IF SUM > CONSTANT

如果2个表中3个用户列的总和超过常量,我将尝试插入一条记录。我到处搜索,发现你不能把用户变量放在IF、WHERE等中。发现你不能把IF、WHERE等中的SUM。我完全不知所措。这是我在WHERE中尝试使用SUM失败之前的错误代码示例,如果有帮助的话:SELECTSUM(num1)INTO@mun1FROMtable1WHEREuser='0';SELECTSUM(num2)INTO@mun2FROMtable1WHEREuser='0';SELECTSUM(num3)INTO@mun3FROMtable2WHEREcolumn1='d'ANDuser='0';SET@mun4=@mun

mysql - 插入多行,其中大部分是常量

我必须在表中插入大量记录。它不是很规范,所以大部分字段都是重复的。我知道正确的命令是:INSERTINTOtable_name(field1,field2,...,field_n)VALUES(value1,value2,...,value_n),...(value1,value2,...,value_n)但我想知道是否有可能保持一些值固定而只指出不同的值。让我们说而不是INSERTINTOtable_name(shop,month,sale)VALUES(1,2,23),(1,2,28),(1,2,29),(1,2,30)有类似的东西INSERTINTOtable_name(shop

mysql - 处理 ON INSERT 触发器时如何锁定 innodb 表?

我有两个innodb表:文章id|title|sum_votes------------------------------1|art1|52|art2|83|art3|35投票id|article_id|vote------------------------------1|1|12|1|23|1|24|2|105|2|-26|3|107|3|158|3|129|3|-2当一条新记录插入到votes表中时,我想更新articles表中的sum_votes字段,方法是计算所有投票。问题如果SUM()计算本身很重(votes表有700K条记录),哪种方式更有效。1。创建触发器CREATE

php - 如何在 INSERT 查询中将美国日期格式转换为 MYSQL 格式

我有以下插入查询:INSERTINTO`bid`.`bdate`(`id`,`bid`,`odate`)VALUES(NULL,'1',STR_TO_DATE('02-27-201117:58','%Y-%m-%d%H:%i:%s'))但它给我错误。谁能指导我做错了什么以及如何纠正。提前致谢 最佳答案 您的日期格式有误。将您的查询更改为:STR_TO_DATE('02-27-201117:58','%m-%d-%Y%H:%i')) 关于php-如何在INSERT查询中将美国日期格式转换为