草庐IT

update_by_query

全部标签

mysql - 为什么这个 update-with-join mysql 查询这么慢?

我有一个应用程序需要更新层次结构中的节点,从ID已知的特定节点向上。我使用以下MySQL语句来执行此操作:updatenodeasAjoinnodeasBonA.lft=B.rgtsetA.count=A.count+1whereB.id=?该表在id上有一个主键,在lft和rgt上有索引。该语句有效,但我发现它存在性能问题。查看相应select语句的EXPLAIN结果,发现“B”表检查的行数非常多(可能是整张表)。我可以轻松地将查询分成两个单独的查询:selectlft,rgtfromnodewhereid=?LFT=result.lftRGT=result.rgtupdatenod

mysql - Perl + DBI + MySQL : How To Run Multiple Queries/Statements

这个问题在这里已经有了答案:PerlDBI-runSQLScriptwithmultiplestatements(4个答案)关闭8年前。目前,我在MYSQL上运行多个语句,如下所示;my$sth1=$dbh->prepare("ALTERTABLEwhatever....");my$sth2=$dbh->prepare("UPDATEwhatever....");my$sth3=$dbh->prepare("ALTERTABLEwhatever....");my$sth4=$dbh->prepare("DROPTABLEwhatever....");my$sth5=$dbh->prep

sql - SUM 和 GROUP BY 生成的列上的 MAX

我正在尝试获取使用SUM语句动态生成的列的MAX。SUM语句与“GROUPby”语法一起使用。这是原始查询,但需要对其进行修改以使用分组、求和,当然还有MAX。SELECTSUM(video_plays)AStotal_video_playsFROM`video_statistics`v_statGROUPBYv_stat.`video_id`ASC如您所见,SUM将video_plays中的所有值相加为total_video_plays..但我只是想获得total_video_plays的MAX我的尝试在下面,但是它们不起作用..SELECTSUM(video_plays)ASMAX

mysql - 自动将 INSERT 语句转换为 UPDATE 的简单方法?

我想使用mysqldump的输出来更新实时数据库中的条目。我不想先删除条目,简单的更新语句就可以了。有没有一种简单的方法可以将包含INSERT语句的mysqldump的输出转换为相应的UPDATE语句?这似乎是一个基本功能,所以我敢肯定有人创建了一个工具或想出了一个快速完成它的方法,这样人们就不必一直重新发明轮子,每个人都编写自己的脚本这个。编辑:我正在寻找一种通用解决方案,而不是我必须手动枚举实际表列的解决方案。这是一个一般性问题,所以我认为应该有一个独立于表的解决方案。 最佳答案 您可以将mysqldump数据恢复到新的临时数据

mysql - ORDER BY MySQL中的相等值

全部,到目前为止,我有以下SQL查询:SELECT*FROM$wpdb->postsJOIN$wpdb->term_relationshipsON$wpdb->term_relationships.object_id=$wpdb->posts.IDJOIN$wpdb->postmetaON$wpdb->postmeta.post_id=$wpdb->posts.IDWHERE$wpdb->posts.post_status='publish'AND$wpdb->posts.post_type='post'AND$wpdb->term_relationships.term_taxonom

php - mysqli_query - 返回值

我正在使用PHP函数mysqli_query运行SELECT查询。如果查询运行成功但查询找不到匹配项,mysqli_query返回什么? 最佳答案 根据manual:ReturnsFALSEonfailure.ForsuccessfulSELECT,SHOW,DESCRIBEorEXPLAINqueriesmysqli_query()willreturnamysqli_resultobject.Forothersuccessfulqueriesmysqli_query()willreturnTRUE.运行但未返回结果的查询仍被视为“

sql - MySQL "ORDER BY"某列具有相同值的行数?

我有一个名为trends_points的表,该表包含以下列:id(行的唯一id)userId(在表中输入的用户的id)术语(一个词)时间(unix时间戳)现在,我正在尝试对此表运行查询,该查询将获取特定时间范围内的行,按照列term在特定时间范围内出现在表中的次数排序。..例如,如果表格有以下行:id|userId|term|time------------------------------------128newyear1262231638237newyear126223165831christmas1262231666434newyear1262231665512christma

MySQL group by 具有多列总和和每组的总和

我有一个这样的表:Votes(id,person,positive_vote,negative_vote)我想按人分组,然后按每个人的总票数排序。我知道如何获得一个组的单个列的总和,但我不知道如何获得每个组的所有总和(总票数)。这是我目前所拥有的:SELECTperson,sum(positive_vote),sum(negative_vote)FROMVotesGROUPBYperson; 最佳答案 尝试,SELECTperson,sum(positive_vote)totalPositive,sum(negative_vote)

MYSQL 在使用 GROUP BY 时显示不正确的行

我有两个表:article('id','ticket_id','incoming_time','to','from','message')ticket('id','queue_id')其中工单代表支持人员和客户之间的电子邮件线程,文章是组成线程的单个消息。我要为每个ticket_id查找具有最长进入时间(表示为unix时间戳)的文章,这是我当前使用的查询:SELECTarticle.*,MAX(article.incoming_time)asmaxtimeFROMticket,articleWHEREticket.id=article.ticket_idANDticket.queue_

php - Mysql ORDER BY 数字 DESC

我的PHP代码中有一个简单的mysql选择查询:$result=mysql_query("SELECTtextFROMexampleORDERBYrankDESC");while($row=mysql_fetch_array($result)){echo$row['text']."";}和这个MySql表:text|rank--------+--------google|245--------+--------yahoo|32--------+--------bing|12当我从查询中获得结果时,会显示如下内容:yahoogooglebing我希望Google排在前面。我猜Yahoo排