Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL更新组函数的使用无效_Mysql - Fatal编程技术网

MYSQL更新组函数的使用无效

MYSQL更新组函数的使用无效,mysql,Mysql,我想更新某些客户的当前奖励积分,我正在运行以下查询: UPDATE bp_booking SET `current_bonuspoints`= (SELECT customers_bonus_points FROM customers WHERE customers_id='505') WHERE` `customers_id`=505 AND date_altered=max(date_altered); 我得到的错误是#1111-组函数的使用无效。我看了一下线程,但我不确定如何将答案应

我想更新某些客户的当前奖励积分,我正在运行以下查询:

UPDATE bp_booking SET `current_bonuspoints`= 
(SELECT customers_bonus_points FROM customers WHERE customers_id='505') 
WHERE` `customers_id`=505 AND date_altered=max(date_altered);
我得到的错误是
#1111-组函数的使用无效
。我看了一下线程,但我不确定如何将答案应用于我的问题

PHP:

我尝试了上面的代码,但没有任何结果。

最大值(日期更改)无效

您需要使用子选择或选择它,或者将其作为输入

(我无法为您重新编写查询,因为我不知道您的意图是什么,但请这样想:date_Changed=max(date_Changed)?是否仅针对用户? e、 g

还是针对特定用户

where... date_altered = (select max(date _altered) from customers where customers_id = 5)
DBMS需要知道max在做什么…这就是错误背后的原因


此代码有效,并显示您可以在更新中使用subselect:

create table a (a int);

insert into a values (1);
insert into a values (2);
insert into a values (3);

update a set a=4 where a = (select max(a) from a);
所有命令都成功执行,全世界都很高兴:)


在MySQL中,我发现它不能按原样工作非常奇怪,请使用:

update a  a1 join (select a, max(a) mm from a) a2 on a1.a = a2.a set a1.a = a2.mm 

或者类似的东西。

你不能在更新中使用subselect,至少这是phpmyadmin说的。我主要是一个Oracle人员,我认为这是ANSI要求的。。。我将测试我的MSSQL,几分钟后回来……这是一个有效的语法,更新答案只是为了反映我所做的事情,所以我看到了你所说的错误,我唯一想修复它的方法是使用直接连接而不是子选择,试着构建一个工作示例,并更新它。为MySQL编写了一些东西-查看它,并检查它是否工作。请注意,如果不使用PK/FK关系,则必须启用“不安全更新”才能执行。
create table a (a int);

insert into a values (1);
insert into a values (2);
insert into a values (3);

update a set a=4 where a = (select max(a) from a);
update a  a1 join (select a, max(a) mm from a) a2 on a1.a = a2.a set a1.a = a2.mm