MySQL选择最后一条记录并更新它

时间:2016-05-15 15:48:57

标签: mysql sql sql-update

我想选择表格中的最后一条记录并更新其名称。

UPDATE item 
SET name = (SELECT name FROM pds
            WHERE id = 9)
WHERE id=(SELECT id ORDER BY id DESC LIMIT 1);

但是,当为所有记录更改执行名称时。

也试过:

UPDATE item 
SET name = (SELECT name FROM pds
            WHERE id = 9)
WHERE id=(SELECT id FROM item ORDER BY id DESC LIMIT 1);

2 个答案:

答案 0 :(得分:3)

在MySQL中,您可以将func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: ((WKNavigationActionPolicy) -> Void)) { print("webView:\(webView) decidePolicyForNavigationAction:\(navigationAction) decisionHandler:\(decisionHandler)") let app = UIApplication.sharedApplication() let url = navigationAction.request.URL let myScheme: NSString = "https" if (url!.scheme == myScheme) && app.canOpenURL(url!) { print("redirect detected..") // intercepting redirect, do whatever you want app.openURL(url!) // open the original url decisionHandler(.Cancel) return } decisionHandler(.Allow) } order by条款应用于limit语句:

update

答案 1 :(得分:0)

只需使用limitorder by

update item
    set name = (select name from pds where id = 9)
    order by id desc
    limit 1;

你的第二个版本应该可行。 。 。除了MySQL可能会生成语法错误。尝试:

UPDATE item i CROSS JOIN
       (SELECT MAX(i2.id) as maxid FROM item i2) mi
    SET i.name = (SELECT pds.name FROM pds WHERE pds.id = 9)
    WHERE i.id = mi.maxid;

第一个版本在语法上是正确的,但它没有FROM子句,因此它使用外部查询中的id值 - 并且仅检查id是否相等对自己。在selectwhere子句中使用子查询时,始终使用限定列名。我建议一直这样做,但这对于这些子句中的子查询尤为重要。