我有一个问题,让我们称他为史蒂夫。
史蒂夫应该将包含位于表-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
他给了我同样的错误。
关于如何指导史蒂夫完成自己的工作并退出让我跑来跑去的任何建议?
答案 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;