【发布时间】:2020-06-29 05:04:39
【问题描述】:
我写了以下查询
SELECT *
FROM
(((SocialAndTags
JOIN
SocialManagementTracker ON SocialAndTags.SMTrackerID = SocialManagementTracker.SocialID)
JOIN
ProgramCategories ON SocialAndTags.ProgramCategoriesID = ProgramCategories.ProgramID)
JOIN
TagCategories ON SocialAndTags.TagCategoriesID = TagCategories.TagID)
WHERE
InitialComment > '2020-03-16 00:00:00.999'
AND InitialComment < '2020-03-17 23:59:59.999'
ORDER BY
SMTrackerID DESC
这执行没问题。
这是我的问题。我有 3 张桌子。 TagCategories 表保存 ID/标签名称。 SocialManagementTracker 保存项目和更多详细信息。 SocialAndTags 表有一个唯一的广告,并且正在提取 TagCategories 和 SocialManagementTracker 的唯一 ID。
当用户为一个项目输入多个标签时,它会在 SocialAndTags 表中出现两次,这就是我设置它的方式。然后如何使用上述查询来过滤出重复的项目结果?
或者我是否倒退了,我应该在我的 SocialAndTags 表中添加另一列?
【问题讨论】:
-
发布您的表结构、数据和所需的输出。
-
如果你有适当的约束,就不能有“重复”。但是可以猜测您不管理自然键 - 而是所有内容都基于身份列。如果是这样,那么您需要调整架构(更好)或调整查询以适应架构问题。但是没有 DDL 和示例数据,没有人能告诉你。
-
并去掉连接周围的括号——它们只会增加混乱和混乱。它们不是必需的。
-
谢谢大家。由于爆发,我通常不会为另一个开发人员编写或使用 SQL。
-
@SM或者你是对的。一切都只是基于身份列。我将重新设计我的设置方式。
标签: sql sql-server sql-server-2005