【问题标题】:Mysql INSERT data in Table 2 for each row in Table 1Mysql INSERT 数据在表 2 中为表 1 中的每一行
【发布时间】:2012-05-16 16:44:32
【问题描述】:

我有两张桌子。

表 A 是需要按问题类型过滤的问题列表。 例如SELECT * from TableA WHERE Qtype = "whatever"

然后,我需要为 TableA 上的查询提取的每条记录添加四个新记录。

表 A 和表 B 在 ID 号上连接 - TableA.id = TableB.questionid

我假设我需要运行它四次,每添加一条记录一次。

我对 FOR EACH 命令与 INNER JOIN 结合使用感到困惑

不胜感激!

【问题讨论】:

  • 你想要TableB中的什么数据?
  • TableB 中需要新数据。因此,对于从表 1 中提取的每条记录,将在表 2 中插入一条新记录,该记录具有表 1 中的 id 号,然后是另一列中的一些下一个文本。例如Table1 记录读取 id, 1 qtype, 不管然后 Table2 新记录将读取 questionid, 1 (从 table1.id 中提取) newfield, "excellent"

标签: mysql


【解决方案1】:

试试这个 4 次:

INSERT INTO TableB (questionid, otherfieldB)
VALUES (
    SELECT id, otherfieldA
    FROM TableA
    WHERE Qtype = "whatever"
)

【讨论】:

  • 如此接近,但是otherfieldB要填充TableA中不存在的新数据。
  • 为什么不插入 TableB (questionid, otherfieldB) SELECT id, otherfieldA, "CustomValue" FROM TableA WHERE Qtype = "whatever"
【解决方案2】:

恐怕我还没有完全理解你的问题,但这会为TableA的每条记录插入三个记录到TableBnewfield的三个不同的值:

INSERT INTO TableB (ID, newfield) (
  SELECT a.ID, n.newfield
  FROM (
    SELECT 'Excellent' AS newfield UNION ALL
    SELECT 'Something' UNION ALL
    SELECT 'Something else'
  ) n
  CROSS JOIN TableA a
)

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2012-09-08
    • 2014-10-01
    • 2023-03-09
    相关资源
    最近更新 更多