如何使用 mysql 中另一个 table 的列来填充列
How to fill a column using another table's column in mysql
我有一个名为 tbl_employer
的 table
| id | employer | emp_type |
| 1 | aaa | GOVERNMENT |
| 2 | bbb | PRIVATE |
我想加入这个 table tbl_remit 因为 tbl_remit 的数据是
|RemitNo| id | employer | emp_cat |Amt_Remit| AP_From | AP_To |
| 1 | 1 | aaa | GOVERNMENT | 20.00 |01/01/2016|01/31/2016|
| 2 | 1 | aaa | GOVERNMENT | 10.00 |02/01/2016|02/29/2016|
| 3 | 1 | aaa | | 10.00 |03/01/2016|03/31/2016|
| 4 | 2 | bbb | PRIVATE | 50.00 |01/01/2016|01/31/2016|
| 5 | 2 | bbb | PRIVATE | 50.00 |02/01/2016|02/29/2016|
| 6 | 2 | bbb | | 50.00 |03/01/2016|03/31/2016|
我想根据 tbl_employer.
填补 tbl_remit 中缺失的数据
|RemitNo| id | employer | emp_cat |Amt_Remit| AP_From | AP_To |
| 1 | 1 | aaa | GOVERNMENT | 20.00 |01/01/2016|01/31/2016|
| 2 | 1 | aaa | GOVERNMENT | 10.00 |02/01/2016|02/29/2016|
| 3 | 1 | aaa | GOVERNMENT | 10.00 |03/01/2016|03/31/2016|
| 4 | 2 | bbb | PRIVATE | 50.00 |01/01/2016|01/31/2016|
| 5 | 2 | bbb | PRIVATE | 50.00 |02/01/2016|02/29/2016|
| 6 | 2 | bbb | PRIVATE | 50.00 |03/01/2016|03/31/2016|
我使用了 Join 语句但失败了。
SELECT r.RemitNo
, r.id
, r.employer
, (SELECT e.emp_type
FROM tbl_employer e
WHERE e.ID = r.ID) emp_cat
, amt_remit
, ap_from
, ap_to
FROM tbl_remit r
JOIN tbl_employer e
ON r.ID = e.ID
这可能会有所帮助:
UPDATE tbl_remit AS r
JOIN tbl_employer AS e ON e.employer=r.employer
SET r.emp_cat=e.emp_type
请记住,如果表格中有很多记录,您可能需要在表格中的雇主字段中添加 INDEX
。我不是 100% 确定 r.id 是否等于 e.id 并且可以用于 JOIN 但如果没问题那么你可以使用这个查询:
UPDATE tbl_remit AS r
JOIN tbl_employer AS e ON e.id=r.id
SET r.emp_cat=e.emp_type
您在问题中失败的查询应如下所示:
SELECT r.RemitNo
, r.id
, r.employer
, e.emp_type
, r.amt_remit
, r.ap_from
, r.ap_to
FROM tbl_remit r
JOIN tbl_employer e
ON r.ID = e.ID
您需要更新查询
update tbl_remit set emp_cat = (select tbl_employer. emp_type from
tbl_employer where tbl_employer. id = tbl_remit.id)
我有一个名为 tbl_employer
的 table| id | employer | emp_type |
| 1 | aaa | GOVERNMENT |
| 2 | bbb | PRIVATE |
我想加入这个 table tbl_remit 因为 tbl_remit 的数据是
|RemitNo| id | employer | emp_cat |Amt_Remit| AP_From | AP_To |
| 1 | 1 | aaa | GOVERNMENT | 20.00 |01/01/2016|01/31/2016|
| 2 | 1 | aaa | GOVERNMENT | 10.00 |02/01/2016|02/29/2016|
| 3 | 1 | aaa | | 10.00 |03/01/2016|03/31/2016|
| 4 | 2 | bbb | PRIVATE | 50.00 |01/01/2016|01/31/2016|
| 5 | 2 | bbb | PRIVATE | 50.00 |02/01/2016|02/29/2016|
| 6 | 2 | bbb | | 50.00 |03/01/2016|03/31/2016|
我想根据 tbl_employer.
填补 tbl_remit 中缺失的数据|RemitNo| id | employer | emp_cat |Amt_Remit| AP_From | AP_To |
| 1 | 1 | aaa | GOVERNMENT | 20.00 |01/01/2016|01/31/2016|
| 2 | 1 | aaa | GOVERNMENT | 10.00 |02/01/2016|02/29/2016|
| 3 | 1 | aaa | GOVERNMENT | 10.00 |03/01/2016|03/31/2016|
| 4 | 2 | bbb | PRIVATE | 50.00 |01/01/2016|01/31/2016|
| 5 | 2 | bbb | PRIVATE | 50.00 |02/01/2016|02/29/2016|
| 6 | 2 | bbb | PRIVATE | 50.00 |03/01/2016|03/31/2016|
我使用了 Join 语句但失败了。
SELECT r.RemitNo
, r.id
, r.employer
, (SELECT e.emp_type
FROM tbl_employer e
WHERE e.ID = r.ID) emp_cat
, amt_remit
, ap_from
, ap_to
FROM tbl_remit r
JOIN tbl_employer e
ON r.ID = e.ID
这可能会有所帮助:
UPDATE tbl_remit AS r
JOIN tbl_employer AS e ON e.employer=r.employer
SET r.emp_cat=e.emp_type
请记住,如果表格中有很多记录,您可能需要在表格中的雇主字段中添加 INDEX
。我不是 100% 确定 r.id 是否等于 e.id 并且可以用于 JOIN 但如果没问题那么你可以使用这个查询:
UPDATE tbl_remit AS r
JOIN tbl_employer AS e ON e.id=r.id
SET r.emp_cat=e.emp_type
您在问题中失败的查询应如下所示:
SELECT r.RemitNo
, r.id
, r.employer
, e.emp_type
, r.amt_remit
, r.ap_from
, r.ap_to
FROM tbl_remit r
JOIN tbl_employer e
ON r.ID = e.ID
您需要更新查询
update tbl_remit set emp_cat = (select tbl_employer. emp_type from tbl_employer where tbl_employer. id = tbl_remit.id)