0

这是我的问题:

我有一个TRUST(id INT, trustlevel INT)包含记录 (1, 5) 和 (2, 3) 的表。我还有一个包含 ids (1, 2, 3, 4, 5) 的数组。

我想要实现的是将数组中的所有 id 插入到一个临时表中,该临时表调用PRESELECTED(id INT, trustlevel INT DEFAULT 10)的方式是复制信任级别的 id 信任,而数组的其余部分接受默认值,即 10 in这个案例。所以最后 PRESELECTED 将有记录 (1, 5), (2, 3), (3, 10), (4, 10), (5, 10)。

我已经想出了如何从 TRUST 表中放置值,但我仍然坚持其余的:

CREATE TEMPORARY TABLE PRESELECTED (id INT, trustlevel INT DEFAULT 10);

INSERT INTO PRESELECTED (
  SELECT * FROM TRUST WHERE id IN (1, 2, 3, 4, 5)
)

问题在于它只插入 1 和 2,因为 3、4 和 5 不在 TRUST 中

有什么快速的建议吗?

4

1 回答 1

1
  1. 在 ID 上添加唯一键(PK 或 UNIQUE KEY)

  2. 首先插入来自 TRUST 的现有 id

    INSERT INTO PRESELECTED SELECT id,trustlevel FROM TRUST WHERE id IN(1,2,3,4,5);

  3. 填写缺失的id

    INSERT IGNORE INTO PRESELECTED (id) VALUES (1),(2),(3),(4),(5);

于 2012-06-21T22:42:37.237 回答