You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL报错#1241:操作数应含1列,IN子查询多列问题求助

解决SQL #1241错误:Operand should contain 1 column(s)

错误原因

你写的SQL报错是因为IN子句的规则:它要求右侧的集合必须是单列数据,但你的子查询SELECT key1,key2,key3 FROM tabel2一次性返回了3列,数据库没法判断用哪一列和n1做匹配,所以抛出#1241错误。而你能正常运行的语句里,IN后面是单个值的集合,完全符合要求,所以没问题。

解决方案

根据你的实际需求选对应的修改方式:

情况1:只需要匹配某一列的值

如果n1只需要和tabel2里的某一列(比如key1)匹配,直接把查询改成只返回该列:

SELECT name FROM tabel WHERE n1 IN ( SELECT key1 FROM tabel2 )

情况2:需要匹配三列中任意一个值

如果n1只要等于tabel2里key1、key2、key3中任意一个值就算匹配,用UNION把三列合并成单列结果集:

SELECT name FROM tabel 
WHERE n1 IN (
    SELECT key1 FROM tabel2
    UNION
    SELECT key2 FROM tabel2
    UNION
    SELECT key3 FROM tabel2
)

提示:UNION会自动去重重复值,如果不需要去重,换成UNION ALL效率更高。

内容的提问来源于stack exchange,提问作者daun babadotan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:37:02