我知道这非常愚蠢,但有人可以帮助我理解这个连接查询在详细描述中做了什么吗?
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
我知道它非常愚蠢,但我需要继续我的进一步需求......请帮助我......
答案 0 :(得分:2)
Left Join
与j2.id IS NULL
的组合仅返回j1
的行,其中j2
没有行。
由于条件为j1.changedone < j2.changedone
,因此它仅返回changedone
每trackid
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}}。