访问查询生成结果,如T-SQL中的ROW_NUMBER()

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)

但它给出了语法错误.

Gor*_*son 6

在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)