17,086
社区成员
发帖
与我相关
我的任务
分享
select * from
T1
left join (
select * from (select * from (select * from T2 where T1.id = T2.id))
) on 1=1
或者
select
(
select * from (select * from (select * from T2 where T1.id = T2.id))
)
from
T1
--手里没有你的T1 T2 表,以dual表为例 下面的sql是运行正常的。
SELECT (SELECT *
FROM (SELECT *
FROM (SELECT * FROM DUAL T2 WHERE T1.DUMMY = T2.DUMMY)))
FROM DUAL T1;
--sql的执行顺序
from -> where -> select -> group by -> having -> order by
你的第一个sql
t1->t2->t2的select->t2的where条件(注意这时候t1的id 还未获取)因此报错
你的第二个sql
t1->t1的select->t2->t2的select->t2的where条件(注意这时候t1的id 已经执行到)因此执行正确
SELECT *
FROM T1
LEFT JOIN (SELECT *
FROM (SELECT *
FROM (SELECT T2.* FROM T2, T1 WHERE T1.ID = T2.ID)))
ON 1 = 1;