1

質問があります。彼をスティーブと呼びましょう。

スティーブは、テーブル 1 にある 6 つの列のデータを含む行をテーブル 2 に挿入すると想定されていますが、テーブル 3 の列の値と一致するテーブル 1 の行のみを選択します...さらに、スティーブが重複するエントリを見つけた場合、table-2 の値を table-1 の値で更新するだけです。

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)

SELECT ...INNER JOINサブクエリが結果、具体的にはステートメントを 返さないため、Steve は私が要求したことを実行しないことを理解する必要があります。

私が彼をテストしていて、彼にプリフォームするように頼んだとき:

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

彼は私に同じエラーを出します。

スティーブに自分の仕事をするように指示し、私をあざけるのをやめる方法について何かアドバイスはありますか?

4

1 に答える 1

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;
于 2013-06-10T15:29:14.367 に答える