查询两个相同的列

时间:2012-07-18 06:42:47

标签: sql sqlite

是否可以像'OR'函数那样查询。

更新示例:

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

答案 2 :(得分: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

答案 3 :(得分:1)

我认为你在left join之后:

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

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