从多个表中插入表

Thi*_*ngs 19 mysql sql

嘿所以我有一个Junction表连接两个不相关的表.两张桌子都有ID.我需要ID使用WHERE不同的值从每个表中选择,例如我是这样看的:

INSERT INTO c (aID, bID)
VALUES (SELECT a.ID WHERE a.Name="Me", SELECT b.ID WHERE b.Class="Math");
Run Code Online (Sandbox Code Playgroud)

我见过的所有示例都使用了一个join语句,但这两个表都有一个共同的值,在这种情况下它们没有.

Yog*_*ngh 44

试试这个查询:

     INSERT INTO C (aID, bID) 
     SELECT A.ID, B.ID 
     FROM A, B 
     WHERE A.Name='Me'
     AND B.Class='Math';
Run Code Online (Sandbox Code Playgroud)

  • 你试图找到一个不在另一个中的ID吗?如果它们不相关,你怎么能联系起来呢?暂时忘掉插入组件,只需获取一个返回所需数据的SELECT语句.上面的答案将为您提供数据的交叉连接.即如果A中有30个'Me'记录,B中有50个'Math'记录,那么你将获得1,500条记录.您希望获得多少条记录以及它们如何在表格之间进行关联? (2认同)

Nic*_*ick 7

Name假设给定的和的每个表中只有一个值Class,最简单的方法是将子查询括在 中()

INSERT INTO c VALUES (
(SELECT ID from a where Name='Me'),
(SELECT ID from b where Class ='Math')
)
Run Code Online (Sandbox Code Playgroud)

dbfiddle 上的演示


Roh*_*bey 6

另一种方式可以是

INSERT INTO c (aID, bID)
SELECT 
   (SELECT A.id FROM TableA A WHERE A.names = 'sometext'), 
   B.id FROM TableB B 
WHERE 
   B.x_name ='othertext';
Run Code Online (Sandbox Code Playgroud)