如何在LIKE语句中定义Query

时间:2014-11-09 12:44:52

标签: mysql

我使用此查询来匹配来自两个表的数据,但它返回

  

错误代码: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个字符组码的所有借记和贷记金额。请有人帮忙解决这个问题。

2 个答案:

答案 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的数据/格式,以便我能以更详细的方式提供帮助。