mysql - INNER JOIN - ERROR 1241(21000):操作数应包含1列

时间:2013-06-10 15:26:09

标签: mysql

我有一个问题,让我们称他为史蒂夫。

史蒂夫应该将包含位于表-1中的六列数据的行插入到表-2中,但只从表-1中选择与表-3中的列匹配的行... AND,如果Steve发现任何重复的条目,只需使用table-1中的值更新表2中的值。

INSERT INTO nht_mlslookup (MSTLISTBRD,MSTMLSNO,MSTACTSTA,MSTSTRNO,MSTSTRNAM,MSTUNITNUM) 
    SELECT (MSTLISTBRD,MSTMLSNO,MSTACTSTA,MSTSTRNO,MSTSTRNAM,MSTUNITNUM) FROM nht_mls AS mls
        INNER JOIN nht_agtdata AS agt ON mls.MSTLISTBRD = agt.agentid
    ON DUPLICATE KEY UPDATE nht_mlslookup.MSTMLSNO = mls.MSTMLSNO;

问题是......我想我打破了史蒂夫?他想做的就是这个。

ERROR 1241 (21000): Operand should contain 1 column(s)

我理解Steve没有按照我的要求做,因为子查询没有返回结果,特别是SELECT ...INNER JOIN语句。

当我测试他并要求他进行预制时:

SELECT * FROM jos_mls AS mls
      INNER JOIN jos_activeagents AS active ON mls.MSTLISTBRD = active.AGENTUID

他做了我期望他做的事。

但是当我让他抓住特定栏目时:

SELECT (MSTLISTBRD,MSTMLSNO,MSTACTSTA,MSTSTRNO,MSTSTRNAM,MSTUNITNUM) FROM jos_mls AS mls
    INNER JOIN jos_activeagents AS act ON mls.MSTLISTBRD = act.AGENTUID

他给了我同样的错误。

关于如何指导史蒂夫完成自己的工作并退出让我跑来跑去的任何建议?

1 个答案:

答案 0 :(得分:4)

SELECT列表周围的括号错误。这使它成为单个表达式,但您不能在SQL中的表达式中使用逗号。

INSERT INTO nht_mlslookup (MSTLISTBRD,MSTMLSNO,MSTACTSTA,MSTSTRNO,MSTSTRNAM,MSTUNITNUM) 
SELECT MSTLISTBRD,MSTMLSNO,MSTACTSTA,MSTSTRNO,MSTSTRNAM,MSTUNITNUM FROM nht_mls AS mls
    INNER JOIN nht_agtdata AS agt ON mls.MSTLISTBRD = agt.agentid
ON DUPLICATE KEY UPDATE nht_mlslookup.MSTMLSNO = mls.MSTMLSNO;