【SQL语句详解:MySQLupdate的正确用法_MySQL】教程文章相关的互联网学习教程文章

`MySQL`中的`UPDATE`和`LIMIT`【代码】

我想更新一个特定的行范围,比如从30开始到50结束.我怎么能实现这一点. 我尝试过:UPDATE tab SET col = 'somevalue' LIMIT 30, 50但这不起作用.有什么方法可以更新这些行吗? 我得到的错误是:Check the manual … for the right syntax to use near ‘ 50’解决方法:您的语句不是有效的MySQL语法,它没有意义.语法的问题是更新语句不支持偏移(请参阅here). 逻辑的问题是你没有order by子句. MySQL在处理表时不保证表的顺序.所以...

mysql – 如何使用Spring Jdbctemplate.update(String sql,obj … args)获取插入的id【代码】

我正在使用Jdbctemplate,我需要插入查询的id.我读到我必须构建一个特定的PreparedStatement并使用GeneratedKeyHolder对象. 问题是在我的应用程序中,所有insert方法都使用此JdbcTemplate更新方法:getJdbcTemplate().update(SQL_INSERT,param1,param2,param3,...);有没有另一种方法来获得插入的ID而不重构所有的daos?解决方法:查看NamedParameterJdbcTemplate和JdbcTemplate的文档您有两种选择: 使用NamedParameterJdbcTemplate的...

mysql出现You can’t specify target table for update in FROM clause【代码】

在mysql执行下面语句时报错: 1 You can’t specify target table for update in FROM clause 2 3 UPDATE edu_grade_hgm_14 SET exam_natures_new = 25 WHERE6 (outid, course_no) IN (7 SELECT8 a.outid,9 a.course_no 10 FROM 11 edu_grade_hgm_1 a 12 INNER JOIN edu_grade b ON a.outid = b.outid 13 AND a.course_no = b.course_no 14 ) 15 AND exam_natures_new IS NULL; ? 括号里的子查询和外面的upadate语句均没错,但加在...

带有子查询的MySQL UPDATE查询永远占用【代码】

我有一个MySQL UPDATE查询,需要很长时间才能完成.我错过了一种更简单的方法来实现相同的结果吗?"UPDATE table2, table1 SET table2.id_occurrences = (SELECT SUM(IF(id = table2.id, 1, 0)) FROM table1) WHERE table2.id = table1.id;"> table2包含所有可能的id值,每个值只有一条记录.> table1包含一些id值,但是有一些值的多个记录.>我需要更新table2中的记录,以显示table1中相应id值的出现次数.上面的查询完成了这项工作,但是当...

mysql – Drupal数据库API查询 – 如果存在则为row.update,否则为row.insert【代码】

我一直在尝试在drupal中运行一个查询,如果它们已经存在则会更新条目,如果没有,则插入一个新条目.代码现在看起来像这样:db_query("IF EXISTS (SELECT %d FROM {uc_posten_packages.pid}) UPDATE {uc_posten_packages} SET title = '%s', label = '%s', cost = '%d', length = '%d', width ='%d', height = '%d', weight = '%d' WHERE pid = %d ELSE INSERT INTO {uc_posten_packages} VALUES ('%d', '%s', '%s', '%d', '%d', '%d'...

mysql – SQL:具有动态列值赋值的update语句【代码】

想象一下以下sql查询:UPDATE MYTABLE SET COL2 = (SELECT COL2 + 1 FROM (SELECT MAX(COL2) FROM MYTABLE) AS X) WHERE ID IN (1,2,3,4,5)假设在执行更新之前MAX(COL2)为1. 我的意图是,对于ID = 1的更新,COL2更新为’max(COL2)1′(即2),并且重新评估后续更新’MAX(COL2)1′,以便ID = 2 ,COL2 = 3,ID = 3,COL2 = 4等…… 实际发生的是,对于所有行(ID = 1,2,3,4,5),COL2的值为2. 是否有一种聪明的方法可以在每次更新时重新评估MAX(C...

在MySQL UPDATE中使用变量(PHP / MySQL)【代码】

我正在使用此代码,因此我可以更新数据库中的记录:$query = mysql_query("UPDATE article SET com_count = ". $comments_count WHERE article_id = .$art_id ");我的问题是:如何在MySQL UPDATE语句中使用变量.解决方法:$query = mysql_query(“UPDATE article set com_count = $comments_count WHERE article_id = $art_id”); 你弄乱了报价和谈判. 您可以像上一个示例一样使用内联变量,也可以将它们连接起来: $query = mysql_qu...

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

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

mysql – 可以在WHERE中执行UPDATE子句吗?【代码】

我正在学习SQL注入,我构建了一个没有SQL注入保护的Web应用程序(PHP MYSQL(5.6)). 简而言之,我的Web应用程序使用SELECT * FROM XXX.USER WHERE user_name='${USERNAME}' AND password='${PASSWORD}'处理登录(如果该sql只返回1行,则登录成功). 一开始,我找到输入USERNAME Sayakiss’ – 然后我的SQL:SELECT * FROM XXX.USER WHERE user_name='Sayakiss' -- ' AND password='${PASSWORD}'通过这种方式,攻击者可以在没有密码的情况下以...

UPDATE查询上的MySQL high lock_time导致服务器冻结【代码】

这让我很难过.请帮我.我的生产服务器每周冻结一次.有些查询锁定行,并阻止其他查询,一直消耗100%的CPU.我需要在服务器恢复工作之前手动终止那些冻结的查询. 我有一个系统,将根据任何给定的插槽在网站上显示最高的CTR横幅.这是我的表结构.CREATE TABLE IF NOT EXISTS `banners` (`banner_id` int(5) NOT NULL AUTO_INCREMENT,`banner_slot` varchar(15) NOT NULL,`banner_img_path` varchar(200) NOT NULL,`banner_link` varchar(20...

mysql – SELECT … FOR UPDATE和MAX()【代码】

在此查询中执行SELECT … FOR UPDATE会锁定此表中的行吗? 表在InnoDB中,查询在内部事务中select max(id) from table1 FOR UPDATE我有这个代码,似乎SELECT … FOR UPDATE不会锁定行.解决方法:SELECT … FOR UPDATE阻止其他会话执行SELECT … LOCK IN SHARE MODE 改为使用SELECT … LOCK IN SHARE MODEsets a shared mode lock on the rowsread. A shared mode lock enables othersessions to read the rows but not tomodify them....

mysql – 当我选择多行FOR UPDATE时,我可以死锁吗?【代码】

在MySQL InnoDB中,假设我有一个表,两个线程都执行“SELECT … FOR UPDATE”.假设两个SELECT语句最终选择多行,例如它们最终都选择了行R42和R99.这可能会陷入僵局吗? 我正在考虑这种情况:第一个线程试图锁定R42然后R99,第二个线程试图锁定R99然后锁定R42.如果我运气不好,两个线程就会陷入僵局. 我读了MySQL Glossary for “deadlock”A deadlock can occur when the transactions lock rows in multiple tables (through statement...

mysql – 在同一查询中访问先前更新的列的行为与JOIN /多表UPDATE的行为不同【代码】

假设我有两个表玩家和统计数据,其中包含以下内容:mysql> select * from players; +----+-------+ | id | alive | +----+-------+ | 1 | 0 | | 2 | 1 | +----+-------+mysql> select * from stats; +--------+------+------+-------+ | player | win | lose | ratio | +--------+------+------+-------+ | 1 | 12 | 20 | 0.6 | | 2 | 8 | 1 | 8 | +--------+------+------+-------+而且我想增...

MySQL(DEFAULT ON UPDATE)TIMESTAMPs【代码】

我有一张桌子,里面有两个字段:dateCreated dateUpdated我希望两个字段都保存时间戳,dateCreated有一个DEFAULT CURRENT TIMESTAMP标志,dateUpdated有一个ON UPDATE CURRENT TIMESTAMP行为,但似乎我不能在同一个表上有多个时间戳字段类型. 如果数据库可以为我处理这个问题真的很有用,我可以以某种方式绕过这个问题吗?解决方法:我们可以. 您可以使用trigger更新字段,如下所示:create trigger CreationTimestamp after insert on My...

mysql – SQL Update并在单个查询中选择【代码】

SQL(MySQL)中是否有一种方法可以递增值,还可以在单??个查询中返回值.我试图卵形做两个查询,如下所示: 查询1UPDATE my_table SET my_col = (my_col + 1) WHERE something = something_else;查询2SELECT my_col FROM my_table WHERE something = something_else;谢谢.解决方法:据我所知,在MySQL中仍然没有这种可能性,但请查看this question以获得可能的解决方法,至少可以让您在事务上使用相同的数据进行选择和更新.