我有一张这样的桌子
EmpId No_of_days
1 24
2 28
6 24
7 30
8 10
9 15
当我编写选择语句时
SELECT No_of_days FROM _table WHERE EmpId = 3 or 4 or 5
我得到了一个空结果集。
我希望员工3和4和5的结果集返回0天
答案 0 :(得分:4)
您可以使用import java.util.WeakHashMap;
public class Main2 {
public static void main(String[] args) throws InterruptedException{
String name = new String("ltt");
WeakHashMap<String, Integer> map = new WeakHashMap<>();
map.put(name, 18);
System.out.println(map.size()); // 1
name = null;
System.gc();
Thread.sleep(10);
System.out.println(map.size()); // 0
}
}
构造并执行values()
:
left join
编辑::如果您有更多select tt.empid, isnull(t.No_of_days, 0)
from ( values (3), (4), (5)
) tt (empid) left join
table t
on t.empid = tt.empid;
的ID,则必须维护一个登台表并执行employee
:
left join
答案 1 :(得分:3)
假设 ,您有一个包含所有员工的表(如果不是,则3、4和5位员工来自何处?),您可以使用{ {1}}到示例表(LEFT JOIN
)上:
_table
这将为您的所有员工提供行。如果只需要3、4和5,则可以添加SELECT e.empid,
ISNULL(t.No_of_days,0)
FROM Employee e --No idea what your employee table is actually called, so guessed.
LEFT JOIN _table t ON e.empid = t.empid;
:
WHERE
答案 2 :(得分:1)
使用coalesce
select coalesce(No_of_days,0)
from _table WHERE EmpId in( 3 , 4 , 5)
顺便说一句,使用In
代替or
,如果您必须在EmpId
中将这些ID推送1
Coalesce()将起作用,否则,如果empid中没有值,则它将不起作用