【问题标题】:sql join with default parameter带有默认参数的sql连接
【发布时间】:2015-08-25 19:11:05
【问题描述】:
假设我有一个名为 t_employee 的表,它有一个 name 列和一个 company_id 列。
我有一个存储过程,可以在其中列出所有员工或仅列出公司,
create procedure p_listEmployees( @companyID integer = null)
在程序中,而不是说@companyID 是否为空......
我宁愿加入处理我可能会或可能不会过滤的事实。
我确信前段时间我已经看到使用 COALESC 完成此操作。
有什么想法吗?
【问题讨论】:
标签:
sql
parameters
filtering
【解决方案1】:
from t_employee e left join company c on COALESCE(c.company_id,1) = COALESCE(e.company_id,1)
【解决方案2】:
类似这样的:
from t_employee e left join company c on c.company_id = e.company_id
where (@companyId is not null and e.company_id = @companyId)
or @companyId is null
注意这是左连接。