我设法创建了一个连接选择语句
SELECT l.rank, r.rank
FROM (SELECT * FROM as795_sh404sef_urls WHERE newurl REGEXP 'Itemid\=108' AND rank<>0 GROUP BY oldurl HAVING MAX(id)) AS l
JOIN (SELECT * FROM as795_sh404sef_urls WHERE rank=0 GROUP BY oldurl) AS r
ON l.oldurl=r.oldurl;
我需要的是交换排名。每次UPDATE
成为l.rank
和r.rank
的另一个单词r.rank
将成为l.rank
。
例如,如果在第一行中,第一个选择的结果是0,第二个选择2.我希望在更新之后它将是另一种方式,首先是2和第二个。
我希望它有任何意义。
答案 0 :(得分:0)
我不确定你正在寻找什么,但是这样吗?你不想要一个&#34; Select *&#34;在更新中的select语句上,但是选择ID。然后,您将拥有要从中更新的ID列表。我所做的是修复更新语法(假设MS-SQL)并给出一个id列表,仅供查看。假设你已经做到了这一点,我单独留下你的选择标准。 :)
Set Rank = 0 where id in
(SELECT id FROM as795_sh404sef_urls
WHERE newurl REGEXP 'Itemid\=108' AND rank<>0 AND oldurl='zumba-gold-8.html' GROUP BY oldurl HAVING MAX(id))