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