mysql左连接问题

时间:2012-06-19 20:01:28

标签: mysql

我试图在一个表上使用左连接从4个表中获取数据。但是,我面临的问题是1)右表中的值都是空的,2)查询不是从左表之一过滤结果(显示右表中的所有行)。

有人知道我在这里做错了吗?

我尝试了下面粘贴的2个不同版本的查询:

版本1:

select prt.rolloutID, prt.taskNum TASK, pra.actionType ACTION, 
prs.serverName as  SERVER_NAME, prs.instanceName as INSTANCE_NAME, 
pn.status as STATUS, pn.description as DESCRIPTION
    from (pdt_rolloutTasks prt, pdt_rolloutActions pra, pdt_rolloutServers prs)
      left join pdt_notification pn on prt.taskNum = pn.taskID
and prt.rolloutId = 74
and prt.taskNum = pra.taskNum
and prt.taskNum = prs.taskNum
and pn.notificationType = 'action';

此版本返回右表(pdt_notification)中具有空值

的所有值

第2版:

select prt.rolloutID, prt.taskNum TASK, pra.actionType ACTION, 
prs.serverName as  SERVER_NAME, prs.instanceName as INSTANCE_NAME, 
pn.status as STATUS, pn.description as DESCRIPTION
    from (pdt_rolloutTasks prt, pdt_rolloutActions pra, pdt_rolloutServers prs)
        left join pdt_notification pn on prt.taskNum = pn.taskID
where prt.rolloutId = 74
and prt.taskNum = pra.taskNum
and prt.taskNum = prs.taskNum
and pn.notificationType = 'action';

这个版本违背了左连接的整个目的,只返回右表中匹配的行(基本上是一个内在的连接)。

提前感谢您的帮助。

0 个答案:

没有答案