select t1.t_name,m_res,t2.t_name,m_time from(
m left join t as t1 on h_id=t1.t_id)
left join t as t2 on g_id=t2.t_id
where m_time between '2006-06-01' and '2006-07-01'
经典的左连接题目
这里为什么不可以用t1.m_res, t1.m_time查询,会报错,为什么啊?
select t1.t_name,m_res,t2.t_name,m_time from(
m left join t as t1 on h_id=t1.t_id)
left join t as t2 on g_id=t2.t_id
where m_time between '2006-06-01' and '2006-07-01'
经典的左连接题目
这里为什么不可以用t1.m_res, t1.m_time查询,会报错,为什么啊?
在 SQL 查询中,左连接操作后所得到的新表中会包含原始表及连接表的所有列,如果两个表中存在相同列名的列,那么在新表中会保留这两个列,但可以用表别名来区分它们。例如,在上面的 SQL 查询中,m 和 t 表都含有 t_id 字段,但是在左连接后生成的新表中,t1 和 t2 通过表别名被区分开来。因此,你不能用 t1.m_res 或 t1.m_time 查询左连接后生成的新表中的列,因为这些列并不存在于 t1 表中,而是存在于新表中,你只能使用 m_res 和 m_time 列名来引用这些列。