【问题标题】:MySQL - Column already exists: 1060 Duplicate column name '1'MySQL - 列已存在:1060 列名重复“1”
【发布时间】:2016-08-02 02:51:57
【问题描述】:

我一直在尝试使用唯一行创建一个INSERT,但是,如果唯一行已经存在,它将简单地忽略插入并且不返回错误。

为什么,和/或查询会出现什么问题?

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;

唯一键:unique_mapping (user_id, cid, hashtag_id), Unique

我从 MySQL 收到以下错误:

列已存在:1060 Duplicate column name '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

【问题讨论】:

    标签: mysql mariadb mysql-error-1064


    【解决方案1】:

    您必须为列指定别名。如果您不这样做,MySQL 将使用常量作为名称。

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

    【讨论】:

    • 如此简单!非常感谢:]
    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2012-11-24
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多