mysql - 从多个表中插入数据

标签 mysql sql-insert

我目前有两个表,它们没有任何共同点,我想从两个表中获取数据并将其插入到第三个表中。

表A

CustomerId | CustomerName | PhoneNumber

表B

ProductId | ProductName | priceA | PriceB | PriceC

表C

id | customerID | productID

现在的问题是,每当我插入一个新产品(表 B)时,我想将它分配给每个客户(表 A)

让我们说

表A

  c1  |  aa  |  1234 
  c2  |  bb  |  3456  
  c3  |  cc  |  3123  

和表B

  p1  |  candy  |  1.1  |  1.2  |  1.3
  p2  |  bag  |  5.5  |  5.6  |  5.7
  p3  |  key  |  3.3  |  3.1  |  3.5  

我希望将每个客户分配给所有产品,如下所示:

表C

  1  |  c1  |  p1  
  2  |  c1  |  p2  
  3  |  c1  |  p3
  4  |  c2  |  p1  
  5  |  c2  |  p2
  6  |  c2  |  p3
  7  |  c3  |  p1
  8  |  c3  |  p2
  9  |  c3  |  p3

请问我应该如何做这件事有什么建议吗?我最初的想法是使用 JOIN,但是没有任何共同点可以加入,有没有更好更快的方法来做到这一点?

最佳答案

上述场景非常适合交叉连接。

这是交叉连接的工作原理: Cross Join in MySQL

现在下面的查询行将选择要插入到表 C 中的所需结果集。

SELECT      A.customer_id, B.product_id
FROM        A
CROSS JOIN  B

插入上面查询得到的结果集即可:

INSERT INTO C
SELECT      A.customer_id, B.product_id
FROM        A
CROSS JOIN  B

关于mysql - 从多个表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57744153/

相关文章:

java - JDBC:在 MySQL 上运行 `insert` 查询时出现 OutOfMemoryError

mysql - 多个 MySQL 选择

mysql - 避免在 SQL 中 INSERT 出现重复值

postgresql - 具有来自可选子查询的多个返回值的 INSERT

python - 使用 python mysql DB 使用 ON Duplicate Key 将重复值插入 DP 时出错

sql - Postgresql:仅在提供新值时才进行冲突更新

mysql - 如何从另一个表插入表

mySQL 按日期排序字段不起作用

php - 准备好的语句 Mysql 不工作

MySQL 插入 [Err] 1136 - 列计数与第 1 行的值计数不匹配