【发布时间】:2011-01-18 12:20:11
【问题描述】:
我有一个包含帖子、标签和 tag_ref 链接表的应用程序。我想查询具有特定标签关联的帖子。
数据库结构如下:
帖子
身份证
身体
city_id
tags_ref
row_id
表格
tag_id
标签
身份证
安全标签
标签
所以 tags_ref 是帖子和标签之间的链接表。
在为帖子添加一些标签后,我现在在查询中得到重复记录。
即使有这个查询:
SELECT P.* FROM posts as P WHERE P.city_id = 2
即使我没有在这里加入表格并且只查找 city_id 字段设置为 2 的帖子,但我仍然只会为具有关联标签的记录获取重复记录。
我也试过了:
DISTINCT (P.id), P.* FROM posts as P WHERE P.city_id = 2
我知道我的帖子表中只有 7 行,所以我知道实际上不存在重复记录,因为我正在计算 7 个不同的帖子。
谁能帮我找出我哪里出错了?
数据库是 MySQL
谢谢,
比利
【问题讨论】:
-
你复制了多少帖子?
-
你现在查询返回什么?请发布实际(非简化)查询和实际输出。
-
这听起来不太可能,您能否发送帖子、标签的表结构以及一些重复的示例数据。
-
这很奇怪,您是否确定当您对表执行简单的
SELECT时会得到重复的记录?就像帖子的重复 ID 一样?你有表帖子的主键吗? -
您的 tags_ref 表包含一个字段 row_id。此列是您引用表帖子/列 ID 的外键吗?您将哪些列用于primaryKey?你有身份列吗? Distinct 总是意味着完整的行 - 如此不同(P.id),p.* 并不意味着 p.id 是唯一的!请提供更多信息。