MySql数据库中同一表上的更新字段
在表MySql数据库中同一表上的更新字段,mysql,Mysql,在表doTable中,我需要将字段Priority设置为1,其中单个CBT\u ID存在这些条件: 首席执行官>0 总和(总和)>50 我尝试了这个sql查询,但没有成功,因为我有一个错误 mysql> UPDATE `doTable` pd INNER JOIN `doTable` pd2 ON ( pd.CBT_ID = pd2.CBT_ID AND pd.CEO > 0 AND SUM(pd.CE_TOT) > 50 ) SET pd.Priori
doTable
中,我需要将字段Priority
设置为1
,其中单个CBT\u ID
存在这些条件:
mysql> UPDATE `doTable` pd
INNER JOIN `doTable` pd2 ON (
pd.CBT_ID = pd2.CBT_ID
AND pd.CEO > 0
AND SUM(pd.CE_TOT) > 50
)
SET pd.Priority = 1;
1111 - Invalid use of group function
如何解决此问题?尝试使用此SQL
UPDATE doTable
SET Priority = 1
WHERE (
SELECT *
FROM doTable
WHERE CEO > 0
AND SUM(CE_TOT) > 50
);
如果出现错误,请尝试将和更改为
或者同时运行两个查询
UPDATE doTable SET Priority=1 WHERE CEO > 0;
UPDATE doTable SET Priority=1 WHERE SUM(CE_TOT) > 50;
试试这个SQL
UPDATE doTable
SET Priority = 1
WHERE (
SELECT *
FROM doTable
WHERE CEO > 0
AND SUM(CE_TOT) > 50
);
如果出现错误,请尝试将和更改为
或者同时运行两个查询
UPDATE doTable SET Priority=1 WHERE CEO > 0;
UPDATE doTable SET Priority=1 WHERE SUM(CE_TOT) > 50;
不能在
where
子句中使用像sum
这样的聚合函数。在不知道表结构的情况下编写查询是很困难的,但如果有多行具有相同的CBT_ID,则可以尝试以下方法:
UPDATE `doTable`
SET Priority = 1
where CBT_ID in
(select CBT_ID from `doTable`
where CEO > 0
group by CBT_ID
having SUM(CE_TOT) > 50
);
不能在
where
子句中使用像sum
这样的聚合函数。在不知道表结构的情况下编写查询是很困难的,但如果有多行具有相同的CBT_ID,则可以尝试以下方法:
UPDATE `doTable`
SET Priority = 1
where CBT_ID in
(select CBT_ID from `doTable`
where CEO > 0
group by CBT_ID
having SUM(CE_TOT) > 50
);
试试这个:
UPDATE `doTable` AS r
JOIN (
SELECT
CBT_ID,
SUM(CE_TOT) AS q,
CEO
FROM
`doTable`
WHERE
CEO > 0
GROUP BY
CBT_ID
HAVING
q > 50
) AS grp ON r.CBT_ID = grp.CBT_ID
SET r.Priority = 1
WHERE
grp.CEO > 0
AND grp.q > 50;
试试这个:
UPDATE `doTable` AS r
JOIN (
SELECT
CBT_ID,
SUM(CE_TOT) AS q,
CEO
FROM
`doTable`
WHERE
CEO > 0
GROUP BY
CBT_ID
HAVING
q > 50
) AS grp ON r.CBT_ID = grp.CBT_ID
SET r.Priority = 1
WHERE
grp.CEO > 0
AND grp.q > 50;
谢谢,但我有相同的错误:1111-组函数的使用无效您需要满足两个条件才能使优先级为1吗?如果不是,那么第二个解决方案也应该适用于您。谢谢,但我有相同的错误:1111-组函数的使用无效您是否需要满足两个条件才能使优先级为1?如果不是,那么第二种解决方案也应该对您有效。