如何在ms访问中使用distinct

bsm*_*bsm 7 sql ms-access distinct ms-access-2003

我有两张桌子.任务和类别.

任务表

分类表

TaskID不是主键,因为存在重复值.当为特定任务选择多个联系人时,taskid和其他详细信息将被复制.我写了查询:

SELECT Priority, Subject, Status, DueDate, Completed, Category
FROM Task, Categories
WHERE Categories.CategoryID=Task.CategoryID;
Run Code Online (Sandbox Code Playgroud)

查询结果

现在,当为该任务选择多个联系人时,对于taskid = T4,有两个记录(以灰色突出显示).我曾尝试在ms access 2003中使用distinct,但它不起作用.我想显示不同的记录.(这里没有要求显示taskid)如果我写:

select priority, distinct(subject), .......
Run Code Online (Sandbox Code Playgroud)

并保持与上述查询中提到的相同,然后它给我一个错误.我也尝试过distinctrow.But没有成功.如何在ms访问中获取不同的值?

bsm*_*bsm 8

好的.它以这种方式工作.

SELECT DISTINCT Task.Priority, Task.Subject, Task.Status, Task.DueDate, 
Task.Completed, Categories.Category
FROM Task, Categories
WHERE (((Categories.CategoryID)=[Task].[CategoryID]));
Run Code Online (Sandbox Code Playgroud)


Tyl*_*ess 5

我不喜欢使用SELECT DISTINCT,我发现它使我的代码编译需要更长的时间.我这样做的另一种方式是使用GROUP BY.

    SELECT Priority, Subject, Status, DueDate, Completed, Category
    FROM Task, Categories
    WHERE Categories.CategoryID=Task.CategoryID
    GROUP BY Subject;
Run Code Online (Sandbox Code Playgroud)

我目前没有VBA,但这也应该有效.