我使用此查询来匹配来自两个表的数据,但它返回
错误代码:1242 子查询返回超过1行
我的示例表和查询如下。
SELECT
ACCOUNT_CODE,
DR_AMOUNT,
CR_AMOUNT
FROM
`tblinvoices`
WHERE ACCOUNT_CODE LIKE
CONCAT((
SELECT
LEFT(SUB_GROUP, 4)
FROM
`tblcharts`
WHERE ACC_TYPE = 'G'), '%') ;
临时表。
SUB_GROUP
------------------
1-01
2-01
3-01
4-01
6-01
6-02
6-03
7-01
7-02
8-01
9-01
DATA TABLE TBLINVOICES
ACCOUNT_CODE DR_AMOUNT CR_AMOUNT
------------ --------- -----------
6-03-0001 27500 0
6-02-0001 0 27500
6-03-0001 1700 0
6-02-0001 0 1700
3-01-0005 15000 0
6-03-0001 0 15000
6-03-0001 315432 0
6-02-0002 0 315432
我希望获得与发票帐号代码匹配前4个字符组码的所有借记和贷记金额。请有人帮忙解决这个问题。
答案 0 :(得分:1)
我认为你想要一个聚合查询。它看起来像这样:
SELECT LEFT(i.ACCOUNT_CODE, 4) as sub_group, SUM(i.DR_AMOUNT) as DR_AMOUNT,
SUM(i.CR_AMOUNT) as CR_AMOUNT
FROM tblinvoices i
GROUP BY LEFT(i.ACCOUNT_CODE, 4);
答案 1 :(得分:0)
我相信你可以做你想要的,使用like子句中的子查询但是你必须确保子查询只返回一个结果:数据库没有意义将一行tblinvoices与很多行进行比较
您可以实现您想要缩小子查询where子句中的结果的内容。而且,只要你只比较整个领域的一小部分,我相信你应该连续不断地“%”子查询结果末尾的字符,或者永远不会匹配!
放置tblcharts的数据/格式,以便我能以更详细的方式提供帮助。