我在下面的mysql查询中遇到错误。请注意,我的子查询应该返回1627862结果。是否可以通过维护子查询的所有条件来解决此错误?
UPDATE SUBSCRIPTION_LOG
SET SUBSCRIPTION_STATUS='D',
DEACTIVATION_DATE=NOW(),
DEACTIVATION_CHANNEL='SYSTEM'
WHERE SUBSCRIPTION_STATUS ='A'
AND SHORT_CODE='22222'
AND MSISDN =(SELECT MSISDN
FROM SUBSCRIPTION
WHERE DATEDIFF(NOW(),`ACTIVATION_DATE`) > LAST_CHARGED_VALIDITY
AND OFFER_CODE NOT IN ('CAT_228','CAT_229','CAT_232','CAT_233')
AND SHORT_CODE = '22222');
错误1242(21000):子查询返回的行数超过1
最佳答案
MSISDN命令中等于=
的期望子查询返回单个值,但是子查询返回多行。为了使您的查询正常工作,请将=
更改为ìn
,如下所示
UPDATE SUBSCRIPTION_LOG SET SUBSCRIPTION_STATUS='D', DEACTIVATION_DATE=NOW(),
DEACTIVATION_CHANNEL='SYSTEM' WHERE SUBSCRIPTION_STATUS ='A'
AND SHORT_CODE='22222'
AND MSISDN in (SELECT MSISDN
FROM SUBSCRIPTION
WHERE DATEDIFF(NOW(),`ACTIVATION_DATE`) > LAST_CHARGED_VALIDITY
AND OFFER_CODE NOT IN ('CAT_228','CAT_229','CAT_232','CAT_233')
AND SHORT_CODE = '22222');
看看是否可行。
关于mysql - MySQL子查询返回超过1行错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51646355/