我一直在搜索MySQL文档,Google和Stackoverflow,但是找不到适合我需求的解决方案。
我有2张桌子: 合同:contract_id,contract_client_id,contract_property_id,contract_tenant_id,contract_startdate,contract_enddate,contract_price
分类帐:ledger_id,ledger_trans_date,ledger_period,ledger_property_id,ledger_tenant_id,ledger_value
我想用合同表中的某些列填充分类帐,并使用以下语句:
INSERT INTO ledger (ledger_trans_date, ledger_period, ledger_property_id,
ledger_tenant_id, ledger_value)
VALUES ('01-08-2018', '01-08-2018', (SELECT contract_property_id,
contract_tenant_id, contract_price FROM contract));
但是出现以下错误:错误代码:1136。列计数与第1行的值计数不匹配。
我也尝试过这个:
INSERT INTO ledger (ledger_trans_date, ledger_period, ledger_property_id,
ledger_tenant_id, ledger_value)
VALUES ('01-08-2018', '01-08-2018',
(SELECT contract_property_id FROM contract),
(SELECT contract_tenant_id FROM contract),
(SELECT contract_price FROM contract));
但是,我得到以下错误:错误代码:1242。子查询返回的行多于1。
我希望有人可以帮助我,并告诉我哪里出了问题... 如果您需要更多信息,请随时询问。
非常感谢。
答案 0 :(得分:2)
这样做:
INSERT INTO ledger (ledger_trans_date, ledger_period, ledger_property_id,
ledger_tenant_id, ledger_value)
SELECT '2018-08-01', '2018-08-01', contract_property_id,
contract_tenant_id, contract_price FROM contract;