最初のimmysqlnoob:D検索を試みましたが、何も役に立ちません。このクエリでデータベースを更新しようとしています。
UPDATE client SET cntr_limit=(SELECT fulltraffic from
(SELECT
client.id,
(SUM(ipacct.byteso)+SUM(ipacct.bytesi)) as fulltraffic
FROM client
LEFT JOIN ips ON client.id = ips.cid
LEFT JOIN ipacct ON ips.ip = ipacct.target
WHERE ipacct.tag = 1
GROUP BY client.id
) as x
) +322122547200 ;
サブクエリを取得すると、複数の行が返されます。サブクエリに複数の行を含めることはできませんが、GROUPBYを使用する必要があります。GROUP BYクエリを削除しても機能しますが、すべてのクライアントは、IDごとに異なる方法で計算されたトラフィックではなく、すべてのIPから計算されたトラフィックを取得します。
私が使用する場合。
SELECT
client.id,
(SUM(ipacct.byteso)+SUM(ipacct.bytesi)) as fulltraffic
FROM client
LEFT JOIN ips ON client.id = ips.cid
LEFT JOIN ipacct ON ips.ip = ipacct.target
WHERE ipacct.tag = 1
GROUP BY client.id;
私は取得しています
id fulltraffic
1 5100993724986
3 410550845834
4 790726628007
5 204212941099
6 440290245087
8 587044969960
GROUPBYimを削除した場合
id fulltraffic
1 487196626849368
前もって感謝します。