这是最初的SQL,效果非常好。
select a.sessionid
from session a
left
outer
join applicationinfo b
on a.sessionid=b.sessionid
left
outer
join license c
on a.sessionid=c.sessionid
limit 10
;
下面的是转换后的SQL
SELECT s.sessionid
FROM
( SELECT *
FROM session a
LEFT
OUTER
JOIN applicationinfo b
ON (a.sessionid = b.sessionid)
)s
LEFT
OUTER
JOIN license c
ON (s.sessionid = c.sessionid)
limit 10
;
第二个SQL将获得10个NULL。由于这些表在sessionid字段上保持连接。假设在第二个SQL中,s.sessionid不应该为NULL。
有人能告诉我这两个SQL无法返回相同结果的原因。感谢。