MySQL INSERT ...选择多行

时间:2018-08-10 22:29:11

标签: mysql

我一直在搜索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。

我希望有人可以帮助我,并告诉我哪里出了问题... 如果您需要更多信息,请随时询问。

非常感谢。

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;