我需要选择一个名为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 这样我就可以在程序中保存所选项目然后更新它
答案 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 KEY
是id
,那么上述内容当然没用。你做错了什么。