2016-04-11 15 views
1

の一意の行にしようとしていましたが、一意の行がすでに存在する場合、単に挿入を無視してエラーを返しません。MySQL - 列はすでに存在します:1060重複する列名 '1'

なぜ、クエリに間違いがありますか?

INSERT INTO hashtag_mapping (user_id, cid, hashtag_id, date_created, date_modified) 
SELECT * FROM (SELECT 1, 8923, 1, NOW(), CURRENT_TIMESTAMP) AS tmp 
WHERE NOT EXISTS (
    SELECT user_id, cid, hashtag_id 
    FROM hashtag_mapping 
    WHERE user_id = 1 
     AND cid  = 8923 
     AND hashtag_id = 1 
) LIMIT 1; 

一意のキー:私は、MySQLから受け取るunique_mapping (user_id, cid, hashtag_id), Unique

次のエラー:

列がすでに存在している:1060重複した列名を '1'

そして、テーブルデザインが役に立ったら...

id user_id   cid hashtag_id date_created    date_modified 
------ ------- ---------- ---------- ------------------- --------------------- 
    1  1  8644   1 2016-03-23 15:19:54 2016-04-06 11:39:32 
    2  1  8644   2 2016-03-23 15:19:54 2016-04-06 11:39:34 
    3  1  8664   3 2016-03-25 17:02:32 2016-04-06 11:39:35 
    4  1  8664   4 2016-03-25 17:02:32 2016-04-06 11:39:36 

答えて

4

列のエイリアスを指定する必要があります。もしあなたがいなければ、MySQLはConstantを名前にします。

SELECT 1 AS field1 , 8923 AS something , 1 AS field2, NOW(), CURRENT_TIMESTAMP 
+0

とても簡単です!大いに感謝する :] – tfont

関連する問題