2016-08-04 10 views
1

私はエラーコード受けてきました:1060:エラーコード:1060重複した列名

  • 重複列名「NULL」
  • 重複する列名「2016年8月4日01: 25:06'
  • 重複する列名 'ジョン

しかし、私は同じ値を持ついくつかのフィールドを挿入する必要がありますが、SQLは否定し、上記のエラーを示しています。エラーはおそらくSQLは同じ列名を選択することはできません、その場合は、コードを書く他の方法はありますか?以下は私の現在のコード

INSERT INTO test.testTable SELECT * 
FROM (SELECT NULL, 'hello', 'john', '2016-08-04 01:25:06', 'john' 
, '2016-08-04 01:25:06', NULL, NULL) AS tmp 
WHERE NOT EXISTS (SELECT * FROM test.testTable WHERE message= 'hello' AND created_by = 'john') LIMIT 1 

私のコラムです:

  • (ID、メッセージ、CREATED_BY、created_date、updated_by、updated_date、deleted_by、deleted_date)

は、感謝を支援してください。

答えて

1

重複する列名がサブクエリから来ています。 null,john、および2016-08-04 01:25:06を複数回選択します。

INSERT INTO test.testTable 
SELECT * 
FROM (SELECT NULL as col1, 'hello' as col2, 
     'john' as col3, '2016-08-04 01:25:06' as col4, 
     'john' as col5, '2016-08-04 01:25:06' as col6, 
     NULL as col7, NULL as col8) AS tmp 
WHERE NOT EXISTS (SELECT * 
        FROM test.testTable 
        WHERE message= 'hello' AND created_by = 'john') 
LIMIT 1 

ないlimit 1はあなたが唯一の潜在的に挿入するために、単一の行を選択している、ここに便利であることを確認してください:あなたが名前/別名で選択された列を提供します。

+0

こんにちは、ありがとう、解決した問題 – nicker

+0

@nicker - 助けて嬉しい – sgeddes

1

サブクエリを使用しています。列にエイリアスを付けることはないので、MySQLはエイリアスを選択しなければなりません。また、定義に使用する式を選択します。

あなたは、サブクエリなしでクエリを記述することができます

INSERT INTO test.testTable(. . .) 
    SELECT NULL, 'hello', 'john', '2016-08-04 01:25:06', 'john', 
      '2016-08-04 01:25:06', NULL, NULL 
    FROM dual 
    WHERE NOT EXISTS (SELECT 1 
         FROM test.testTable tt 
         WHERE tt.message = 'hello' AND tt.created_by = 'john' 
        ); 

あなたがWHEREサブクエリで相関句を使用し、SELECTでサブクエリを使用しない場合:また

INSERT INTO test.testTable(. . .) 
    SELECT * 
    FROM (SELECT NULL as col1, 'hello' as message, 'john' as created_by, 
       '2016-08-04 01:25:06' as date, 'john' as col2, 
       '2016-08-04 01:25:06' as col3, NULL as col4, NULL as col5 
     ) t 
    WHERE NOT EXISTS (SELECT 1 
         FROM test.testTable tt 
         WHERE tt.message = t.message AND 
          tt.created_by = t.created_by 
        ); 

LIMIT 1は1行しかないので何もしません。

+0

こんにちは、指摘していただきありがとうございます。どうもありがとう – nicker

関連する問題