繁体   English   中英

在MSSQL Server中参数化查询不受限制

[英]Parameterize query not limiting in mssql server

我正在处理一个项目,并且一直在测试查询以查看查询的工作方式,但是问题是当我将参数传递给查询时,它并不仅限于我传递的参数。

这是查询语法:

SELECT C.*,
           F.Bank_VNO,
           F.sname
    FROM   customer C
           LEFT JOIN fssign F
                  ON c.cust_no = f.cust_no
                     AND F.cust_no = '100055'
           LEFT JOIN (SELECT Min(ac_no) ac_no
                      FROM   loans
                      WHERE  full_paid = '0'
                      GROUP  BY ac_no) AS l
                  ON c.cust_no = l.ac_no
                     AND cust_type = 'BUS' 

我认为您的意思不是很清楚,但也许您应该删除GROUP BY:

 SELECT C.*
        ,F.Bank_VNO
        ,F.sname
    FROM customer C
    LEFT JOIN fssign F ON c.cust_no = f.cust_no
                AND F.cust_no = '100055'
    LEFT JOIN ( SELECT MIN(ac_no) ac_no
                FROM loans
                WHERE full_paid = '0'
/*              GROUP BY ac_no */
        ) AS l ON c.cust_no = l.ac_no
        AND cust_type = 'BUS'

可能是您要编写的查询是:

SELECT C.*
      ,F.Bank_VNO
      ,F.sname
FROM customer C
INNER JOIN fssign F ON c.cust_no = f.cust_no                    
INNER JOIN (SELECT MIN(ac_no) ac_no
            FROM loans
            WHERE full_paid = '0'   
            ) AS l ON c.cust_no = l.ac_no
WHERE  C.cust_type = 'BUS'
 AND  F.cust_no = '100055'

Left Join将不过滤记录。 除非您将过滤器放在Where子句中,否则它将带走左表中的所有记录。

我认为您仅在cust_type = 'BUS'时才需要记录。 将过滤器移到Where子句。 假设cust_type列来自customer

SELECT C.*,
           F.Bank_VNO,
           F.sname
    FROM   customer C
           LEFT JOIN fssign F
                  ON c.cust_no = f.cust_no
                     AND F.cust_no = '100055'
           LEFT JOIN (SELECT Min(ac_no) ac_no
                      FROM   loans
                      WHERE  full_paid = '0'
                      GROUP  BY ac_no) AS l  -- This query does not make more sense
                  ON c.cust_no = l.ac_no
Where C.cust_type = 'BUS' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM