PHPMyAdmin报错#4078:执行子查询时数据类型不匹配求助
错误原因分析及解决办法
- 直接原因:你的子查询写了
select *,这会返回该行的所有列数据,但user_id = ...里的等号只能用来匹配单个值(比如一个整数),现在右边是一整行数据,类型对不上,所以触发了#4078错误。 - 隐性问题:就算你把
select *改成select user_id,如果status=102的用户不止一个,子查询会返回多个user_id,这时候=也用不了,会报“子查询返回多行”的错误。
修正方案
根据你的实际需求选对应的写法:
- 确定
status=102的用户只有一个:
SELECT * FROM `user_details` WHERE user_id = ( select user_id FROM user_details where user_details.status = 102 )
status=102的用户可能有多个:
SELECT * FROM `user_details` WHERE user_id IN ( select user_id FROM user_details where user_details.status = 102 )
内容的提问来源于stack exchange,提问作者Piotrek
相关产品推荐
相关产品推荐

