1

是否可以像“或”函数一样以这种方式查询。

更新示例:

Select S.*, U.* from Staff S, Unit U where S.Unit='' OR S.Unit= U.UnitCode;

员工表架构:

Staff ID, Staff Name, UnitCode, StaffNumber

单元架构:

UnitCode, ClassCode

上面更新的示例有效。但单位为空白的员工记录将与所有单位代码重复。

例如结果输出:

Staff ID     Staff Name     UnitCode     ClassCode    Staff Number
1            John            IT1         B123         234
2            Sally           BUS2        B234         0589
3            Johnson         IT1         B123          111
4            Johnson         BUS2        B234          111

谢谢

4

4 回答 4

2

由于您使用的是 SQLite,请使用OR而不是||

Select S.*, U.* 
from Staff S, Unit U 
where S.Unit = '' OR S.Unit= U.UnitCode;

如果我删除了这个条件,结果是什么?S.Unit = ''

Select S.*, U.* 
from Staff S INNER JOIN Unit U 
         on S.Unit = U.UnitCode;

更新 1

你能试试这个吗?

SELECT x.*
FROM Staff x INNER JOIN
    (Select DISTINCT S.StaffID
     from Staff S INNER JOIN Unit U 
             on (S.Unit = U.UnitCode) OR
                (S.Unit = '')
     ) y ON x.StaffID = y.StaffID
于 2012-07-18T06:58:25.860 回答
1

是的,你可以,使用OR代替 ||

于 2012-07-18T06:44:29.120 回答
1
Select S.*, U.* from Staff S, Unit U where S.Unit='' OR S.Unit IS null OR S.Unit= U.UnitCode;

编辑:

SELECT 
CASE WHEN S.Unit='' THEN S.Unit END AS blankOne, 
CASE WHEN S.Unit= U.UnitCode THEN S.Unit END AS MatchOne
FROM Staff S, Unit U
WHERE S.Unit= U.UnitCode
于 2012-07-18T06:51:40.290 回答
1

我认为您在left join之后:

Select S.*, U.* 
  from Staff S
  left join Unit U 
    on S.Unit= U.UnitCode

这将从 Unit 检索所有员工记录和匹配记录(如果存在)。如果不是此记录的 Unit 中的所有列都将为空。

于 2012-07-18T07:42:01.983 回答