我想填写TableE,我有这些表。
表A
+------+--------+--------+
| A_ID | A_NAME | A_TYPE |
+------+--------+--------+
| 1 | apple | 1 |
+------+--------+--------+
表B
+------+---------+--------+
| B_ID | B_NAME | FROM_A |
+------+---------+--------+
| 1 | A_NAME | A_ID |
+------+---------+--------+
表C
+-------+------------+
| C_ID | C_NAME |
+-------+------------+
| A_TYPE| fruit |
+-------+------------+
| A_TYPE| vegetables |
+-------+------------+
表D
+------+---------+
| D_ID | D_NAME |
+------+---------+
| 1 | fruit |
+------+---------+
TableE
+------+--------+
| E_ID | E_NAME |
+------+--------+
| B_ID | D_ID |
+------+--------+
如何使用TableE
和TableB B_ID
填充TableD D_ID
,其中C_Name =
包含D_Name,TableC
和TableD
之间没有密钥,只能通过TableA
和TableB
,其中A_ID
是关键。
因此,如果apple是一个水果,请用TableE
B_ID
和D_ID
写一个SQL语句。
我怎么能这样做?
我在TableA和TableB中有2000行 我想将C_Name与D_Name进行比较,如果它相同,则在TableE中写入TableB中的ID和TableD中的ID。
答案 0 :(得分:0)
INSERT INTO TableE (E_ID , E_NAME)
SELECT b.B_ID ,d.D_ID FROM TableA a
INNER JOIN TableB b ON b.FROM_A = a.A_ID
INNER JOIN TableC c ON c.C_ID = a.A_TYPE
INNER JOIN TableD d ON d.D_NAME = c.C_NAME