在Access SQL中我们有时可以使用自加入产生一个排名顺序。例如,对于[表1]
TID UserId TSource TText
--- ------ ------- -----
412 homer foo bar
503 marge baz thing
777 lisa more stuff
查询
SELECT
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText,
COUNT(*) AS TRank
FROM
table1 AS t1a
INNER JOIN
table1 AS t1b
ON t1a.TID >= t1b.TID
GROUP BY
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText
produces
TID UserId TSource TText TRank
--- ------ ------- ----- -----
412 homer foo bar 1
503 marge baz thing 2
777 lisa more stuff 3
我们可以将其用作连接到另一个表的子查询
select
t.TRank as uni,
t.TSource as [Source],
t.TText as [Text],
u.Name as [UserId],
u.Image_Url as [ImageFilePath]
from
(
SELECT
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText,
COUNT(*) AS TRank
FROM
table1 AS t1a
INNER JOIN
table1 AS t1b
ON t1a.TID >= t1b.TID
GROUP BY
t1a.TID,
t1a.UserId,
t1a.TSource,
t1a.TText
) AS t
INNER JOIN
table2 AS u
ON t.UserId = u.UIds
产生类似的东西
uni Source Text UserId ImageFilePath
--- ------ ----- ------------ -------------
1 foo bar HomerSimpson whatever1
2 baz thing MargeSimpson whatever2
3 more stuff LisaSimpson whatever3