2012-08-02 60 views
1

我需要修改这个代码更新多个变量与偏移命令“补偿1”到最后,但是因为UPDATE不允许OFFSET命令, 我需要使用INNER JOIN来添加该部分。但是我只知道如何删除单个变量时,像这样做 :使用INNER JOIN命令

DELETE a FROM favorites a 
INNER JOIN 
(
    SELECT favoritesid 
    FROM favorites 
    WHERE email = '$email' 
    ORDER BY favoritesid 
    LIMIT 1 OFFSET x 

) b ON a.favoritesid = b.favoritesid 

但更新多个可变因素的时候,我甚至wouldent知道从哪里开始。谁能帮我吗?

+0

那么你真的想用'OFFSET'做什么。根据autoincrement id从一行更新到相邻行? – 2012-09-14 21:17:04

回答

0

也许是这样的:

UPDATE favorites A INNER JOIN 
(
    SELECT favoritesid FROM favorites WHERE email='$email' 
    ORDER BY favoritesid LIMIT x 
) B USING (favoritesid) 
SET 
    A.category='$newcat', 
    A.subcategory='$newsubcat', 
    A.sitename='$newwebsitename', 
    A.url='$newwebsiteurl' 
; 

这里是另一种选择:

UPDATE favorites A 
SET 
    A.category='$newcat', 
    A.subcategory='$newsubcat', 
    A.sitename='$newwebsitename', 
    A.url='$newwebsiteurl' 
WHERE A.favoritesid = 
(
    SELECT MAX(favoritesid) FROM favorites WHERE email='$email' 
    ORDER BY favoritesid LIMIT x 
); 

这些例子假设OFFSET 0。如果你心里有一个偏移,试试这个:

UPDATE favorites A INNER JOIN 
(
    SELECT favoritesid FROM favorites WHERE email='$email' 
    ORDER BY favoritesid LIMIT x OFFSET $myoffset 
) B USING (favoritesid) 
SET 
    A.category='$newcat', 
    A.subcategory='$newsubcat', 
    A.sitename='$newwebsitename', 
    A.url='$newwebsiteurl' 
; 
+0

我正在尝试更新我刚刚使用删除作为示例 – user1559811 2012-08-02 22:08:56

+0

我需要在那里添加OFFEST – user1559811 2012-08-02 22:18:29

+0

谢谢我感谢您和我一起住这个:D – user1559811 2012-08-02 22:31:48