簡體   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