【发布时间】:2019-05-07 10:18:06
【问题描述】:
我有两张桌子)
CREATE TABLE `Company` (
`companyName` TEXT,
`status` TEXT,
`extra` TEXT,
`companyId` TEXT,
`companySecondId` TEXT
CREATE TABLE `UserList` (
`userName` TEXT,
`companyId` TEXT
);
我想用 companyId 加入 UserList 和 Company
数据示例)
companyName status extra companyId companySecondId
"CompanyA" "456" "456" "A" "A"
"CompanyB" "789" "789" "B" "A"
"CompanyC" "123" "123" "C" "E"
"CompanyD" "111" "111" "D" "D"
UserName CompanyId
"UserA" "A"
"UserB" "B"
"UserC" "C"
"UserD" "D"
情况如下。
公司可以合并 公司B合并到A
公司可能破产 CompanyC 已并入 CompanyE,但 CompanyE 已破产。
在这种情况下,我会这样加入
select UserList.*, t1.companyName
from UserList
inner join (
select companyId,
(case when exists
(select * from Company where a.companySecondId = companyId)
then (select companyName from Company where a.companySecondId = companyId)
else (select companyName from Company where a.companyId = companyId)
end) as companyName
from Company a
) as t1 on UserList.companyId = t1.companyId
如果每个用户的公司 ID 都存在于公司表中,并带有“companySecondId”,则显示 companySecondId 的公司名称
如果“companySecondId”的公司表中不存在每个用户的 companyId,则显示 companyId 的 companyName 而不是 companySecondId
所以我可以得到这样的结果
userName companyId companyName
"UserA" "A" "CompanyA"
"UserB" "B" "CompanyA"
"UserC" "C" "CompanyC"
"UserD" "D" "CompanyD"
但我想像这样显示状态和额外内容 但是如果存在〜则〜否则只返回一列。我怎样才能在 SQLite 中做到这一点??
userName companyId companyName status extra
"UserA" "A" "CompanyA" "456" "456"
"UserB" "B" "CompanyA" "456" "456"
"UserC" "C" "CompanyC" "123" "123"
"UserD" "D" "CompanyD" "111" "111"
【问题讨论】:
标签: android sql database sqlite