首先,架构不是我的。这是可怕的,非常困惑。还有一个警告 - 这很复杂。
我有 3 个表 - tbl_a
、tbl_b
和 tbl_c
。 switch
实际上是tbl_a
中实体(记录)的一个属性。但它只能通过 tbl_b
上的 JOIN
访问,然后是 tbl_c
:
+---------+ +---------+ +---------+
| tbl_a | | tbl_b | | tbl_c |
+---------+ +---------+ +---------+
| a_id | +--> | b_id | +--> | c_id |
| b_fk | <--+ | c_fk | <--+ | switch |
+---------+ +---------+ +---------+
+---------+
| tbl_his |
+---------+
| his_id |
| a_fk |
| coef |
+---------+
要添加功能,我需要创建第四个表 (tbl_his
) - 我已经完成了。在此表中,我有一个 coef
列,它可以取 1 到 100 之间的任何数字。我需要为表 tbl_his
中的每个 tbl_a
填充一条记录记录。当前数据 switch
为 0
或 1
。
对于 tbl_a
中的每条记录与 0
相关的 switch
我应该将记录添加到 tbl_his
作为
NULL, 'a_id', '100'
如果记录开关是 1
我应该将以下记录添加到 tbl_his
:
NULL, 'a_id', '50'
这个查询能完成一半的工作吗?有什么方法可以一次性完成 50
记录和 100
记录?
INSERT INTO `tbl_his` (`his_id`, `a_fk`, `coef`) VALUES (NULL, 'tbl_a.id', '100')
WHERE (
SELECT tbl_a.id
FROM tbl_a
LEFT JOIN tbl_b ON tbl_a.b_fk = tbl_b.id
LEFT JOIN tbl_c ON tbl_b.c_fk = tbl_c.c_id
WHERE tbl_c.switch = '0')
我是一名优秀的程序员,十分优秀!