如何在MySQL中用next更新当前行?

时间:2019-02-08 08:17:06

标签: mysql

我有<div class="row"> <div class="col-lg-12"> <div class="ibox"> <div class="ibox-title"> <h5>Select Users</h5> </div> <div class="ibox-content"> <form id="form" action="#" class="wizard-big"> <select id="enmem_duallist" name="enmem_duallist" class="form-control dual_select" multiple> </select> </form> </div> </div> </div> </div> 个节点,其中的function Template() { var data = { "CompCode": $scope.CompCode, "BrCode": $scope.BrCode, "AppCode": $scope.AppCode, //"UserId": $scope.USERID, "ClassCode": $scope.ClassGroupID, //"Status": 'A', //"MemberEnrollCode": $scope.MemberEnrollmentCode } EnrollMemberService.getGroupClassTemplate(data, function (response) { $scope.loadmembers = jQuery.parseJSON(response); }); } 列需要更新为下一行status = 0列。

enter image description here

类似这样的东西:

updated_at

当前我遇到此错误:

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以尝试使用内部联接重写相关更新:

UPDATE node_status t1
INNER JOIN
(
    SELECT id, node_id,
        (SELECT created_at FROM node_status t
         WHERE t.id > s.id AND t.node_id = s.node_id
         ORDER BY t.id LIMIT 1) AS created_at
    FROM node_status s
) t2
    ON t1.id = t2.id AND t1.node_id = t2.node_id
SET
    t1.updated_at = t2.created_at
WHERE
    t1.node_id = 1811;

请注意,我向ORDER BY子查询添加了LIMIT子句,因为这似乎是您想要的逻辑。通常,在没有LIMIT的情况下使用ORDER BY是没有意义的。

答案 1 :(得分:0)

使用以node_id作为参数的函数,并使用SELECT INTO将以下结果存储:SELECT created_at FROM node_status WHERE id > s.id AND node_id = s.node_id LIMIT 1到变量中,然后使用UPDATE将变量设置为值。

您可能希望确保订单SELECT的顺序,否则可能会发生奇怪的事情。

然后当然要调用该函数。