Sql server 在mssql服务器中参数化查询不受限制

Sql server 在mssql服务器中参数化查询不受限制,sql-server,Sql Server,我有一个项目正在进行中,我一直在测试我的查询,看看它们是如何工作的,但问题是当我将一个参数传递给查询时,它并没有将它限制为我传递的那个参数 以下是查询语法: SELECT C.*, F.Bank_VNO, F.sname FROM customer C LEFT JOIN fssign F ON c.cust_no = f.cust_no A

我有一个项目正在进行中,我一直在测试我的查询,看看它们是如何工作的,但问题是当我将一个参数传递给查询时,它并没有将它限制为我传递的那个参数

以下是查询语法:

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
    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
子句中

我认为只有当客户类型为'BUS'时,您才需要这些记录。将筛选器移动到
Where
子句。假设
cust\u 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' 

它仍然会产生与我相同的结果。您是否尝试了第二个查询?但是如果两个表不相等,则内部联接不会产生任何结果,这与左联接不同。当我运行它时,它没有显示任何结果,因为两个表的标准不相等。请在您的问题文本中发布实际结果和预期结果(文本,而不是图像),以便我们可以尝试帮助您