我有一个查询
select c.name as companyname, u.name,u.email,u.role,a.date
from useraccount u, company c, audittrial a
where
u.status='active'
and u.companyid=c.id
and
(
u.companyid=a.companyID
and a.activity like 'User activated%'
and a.email=u.email
)
order by u.companyid desc
limit 10
Run Code Online (Sandbox Code Playgroud)
所以,如果以下部分不满足,
(
u.companyid=a.companyID
and a.activity like 'User activated%'
and a.email=u.email
)
Run Code Online (Sandbox Code Playgroud)
不会返回任何行..
但我想返回以下查询的结果
select c.name as companyname, u.name,u.email,u.role,a.date
from useraccount u, company c, audittrial a
where
u.status='active'
and u.companyid=c.id
order by u.companyid desc
limit 10
Run Code Online (Sandbox Code Playgroud)
但要添加,我应该返回日期(如果可用),如果日期不可用则返回空值.
我怎样才能做到这一点?
结合where子句的多个表实际上是内连接:
select * from table1, table2 where table1.id = table2.id
Run Code Online (Sandbox Code Playgroud)
是相同的
select * from table1 inner join table2 on table1.id = table2.id
Run Code Online (Sandbox Code Playgroud)
要使审计跟踪可选,请将其更改为left join:
select ...
from useraccount u
join company c
on u.companyid = c.id
left join
audittrial a
on a.activity like 'User activated%'
and a.email = u.email
order by
u.companyid desc
limit 10
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我认为正确的拼写是审计TR AI湖