【问题标题】:Combine INSERT INTO and SELECT on MySQL在 MySQL 上结合 INSERT INTO 和 SELECT
【发布时间】:2015-09-16 15:46:39
【问题描述】:

第 1 步)在 users 表中找到 player 表中不存在的 id。 步骤 2) 插入缺少 ids

的玩家表

所以我应该结合这两个查询。 (将 SELECT 查询的结果作为列表提供给 INSERT INTO 查询)

SELECT users.uid 
FROM users 
WHERE users.uid NOT IN (select uid from players);

INSERT INTO players (uid)
VALUES ()

最干净的方法是什么?

【问题讨论】:

标签: mysql


【解决方案1】:

将您的选择查询放在插入查询下方并删除values()

INSERT INTO players (uid)
SELECT users.uid 
FROM users 
WHERE users.uid NOT IN (select uid from players);  

根据评论编辑
一个简单的方法是使用INSERT IGNORE - 这基本上将插入所有不在players 表中的uid 并忽略其余部分:

INSERT IGNORE INTO players (uid)
SELECT users.uid 
FROM users

【讨论】:

  • 插入忽略会更简单
  • @Strawberry 谢谢,我更新了我的答案,你可以吗?
  • 我很好!但它不需要是主要的。它只需要独一无二!
  • 糟糕 - 您之前的回答更好!它确实需要是唯一的(如果它不是主要的)
  • @Strawberry "所有在该表中不存在的 uid 并忽略其余部分" 我认为这一行解释了查询将插入唯一值
【解决方案2】:

试试这个:

INSERT INTO users (uid)
(SELECT users.uid
   FROM users
   LEFT JOIN players ON users.uid = players.uid)
   WHERE players.uid IS null)

【讨论】:

    【解决方案3】:
    INSERT INTO players 
    SELECT users.uid 
    FROM users 
    WHERE users.uid NOT IN (select uid from players);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2017-11-25
      • 2012-03-11
      • 1970-01-01
      • 2011-03-19
      • 2011-07-12
      相关资源
      最近更新 更多