基本的连接查询理解

时间:2010-05-10 05:59:04

标签: sql mysql join left-join

我知道这非常愚蠢,但有人可以帮助我理解这个连接查询在详细描述中做了什么吗?

SELECT j1.*
FROM jos_audittrail j1
LEFT OUTER JOIN jos_audittrail j2
   ON (j1.trackid = j2.trackid AND j1.field = j2.field AND j1.changedone < j2.changedone)
WHERE j1.operation = 'UPDATE'
  AND j1.trackid=$t_ids[$n]
  AND j2.id IS NULL

我知道它非常愚蠢,但我需要继续我的进一步需求......请帮助我......

1 个答案:

答案 0 :(得分:2)

Left Joinj2.id IS NULL的组合仅返回j1的行,其中j2没有行。

由于条件为j1.changedone < j2.changedone,因此它仅返回changedonetrackid changedone行(如果有多个行的trackid值为trackid changedone 1 1 1 2 2 1 一个trackid changedone 1 2 2 1 ,所有这些都被退回了。)


所以,如果你有

1 - 1

你会得到

Left Join

因为1 - 2 j2.id找到了一条记录(NOT NULL),所以{{1}}为{{1}}。