[英]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.