use*_*342 2 ms-access row-number
我们在MS Access中有ROW_NUMBER函数吗?如果它有,那么请让我知道它的任何语法,因为我被困在这里.我试过论坛,但我得到了sql server语法.以下是我的查询:
select
ROW_NUMBER() OVER (ORDER BY t.TID) AS uni ,
t.TSource as [Source],
t.TText as [Text],
u.Name as [UserId],
u.Image_Url as [ImageFilePath],
from table1 t inner join table2 u on t.UserId = u.UIds
Run Code Online (Sandbox Code Playgroud)
但它给出了语法错误.
在Access SQL中,我们有时可以使用自联接来生成排名顺序.例如,对于[table1]
TID UserId TSource TText
--- ------ ------- -----
412 homer foo bar
503 marge baz thing
777 lisa more stuff
Run Code Online (Sandbox Code Playgroud)
查询
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
Run Code Online (Sandbox Code Playgroud)
产生
TID UserId TSource TText TRank
--- ------ ------- ----- -----
412 homer foo bar 1
503 marge baz thing 2
777 lisa more stuff 3
Run Code Online (Sandbox Code Playgroud)
我们可以将它作为JOIN中的子查询用于另一个表
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
Run Code Online (Sandbox Code Playgroud)
产生类似的东西
uni Source Text UserId ImageFilePath
--- ------ ----- ------------ -------------
1 foo bar HomerSimpson whatever1
2 baz thing MargeSimpson whatever2
3 more stuff LisaSimpson whatever3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11264 次 |
| 最近记录: |