使用某个id更新SELECTED项目中的某一行

时间:2012-02-25 09:55:12

标签: php mysql database

我需要选择一个名为song_number的列,其中id = 2,然后使用7更新所选行的第二行,例如

我认为我需要的查询是这样的,但我不能让它工作

UPDATE `song` SET `song_number`= 7 WHERE (SELECT `song_number` FROM `song` WHERE `id` = 2 LIMIT 1,1)

任何帮助将不胜感激

编辑:我认为问题主要出在我制作的数据库结构中,但是我通过制作存储过程找到了我需要的解决方案http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html 这样我就可以在程序中保存所选项目然后更新它

3 个答案:

答案 0 :(得分:0)

我怀疑一个查询是否可行,但我认为没有理由在一个查询中执行此操作 为什么你不能只选择然后更新?

答案 1 :(得分:0)

我认为应该是这样的:

UPDATE `song` SET `song_number`= 7 WHERE `song_number` = (SELECT `song_number` FROM `song` WHERE `id` = 2 LIMIT 1,1);

答案 2 :(得分:0)

您必须确定要更新的行。标识意味着使用表的UNIQUE键或PRIMARY键。

通过将条件从UPDATE移至WHERE,可以取消JOIN上的MySQL限制:

UPDATE 
      song AS s
  JOIN
      ( SELECT  PK                --- the Primary Key of the tba;e 
        FROM song 
        WHERE id = 2 
        ORDER BY ---whatever
        LIMIT 1 OFFSET 1
      ) AS u
    ON u.PK = s.PK
SET s.song_number= 7 

如果PRIMARY KEYid,那么上述内容当然没用。你做错了什么。