【问题标题】:Mysql - Getting duplicate resultsMysql - 获得重复的结果
【发布时间】:2017-01-11 03:20:49
【问题描述】:

我有 3 个表 UPDATES、MODELS 和 UPDATES_MODELS。

UPDATES 表具有以下列:

  • update_id,
  • 已发布
  • 缩略图

MODELS 表具有以下列:

  • model_id
  • 名字
  • 姓氏。

UPDATES_MODELS 是一个链接表,包含以下列:

  • update_id
  • model_id。

有些更新有超过 1 个模型。例如,如果更新有 2 个模型,我的查询将返回 2 个重复的缩略图、2 个重复的标题, 2 个重复的日期,1 个更新将具有 1 个型号名称,而另一个更新将具有另一个型号名称。

这不是我想要的。

包含 2 个或更多模型的更新应返回 1 个缩略图、1 个标题、1 个日期,并在更新中列出两个模型名称。

我尝试在 SQL 查询中使用 DISTINCT,但什么也没做。无论是否使用 DISTINCT 关键字,我都得到了相同的结果。

这是我的代码:

SELECT updates.update_id, title, posted, duration, updates.thumbnail, updates.alt_tag, updates.title_tag, updates.visible, models.model_id, first_name, last_name, updates_models.update_id, updates_models.model_id
FROM updates
INNER JOIN updates_models
ON updates.update_id = updates_models.update_id
INNER JOIN models
ON models.model_id = updates_models.model_id

【问题讨论】:

  • 给出你想要的样本数据和样本结果。
  • 所以您期望您的 SELECT 生成 1 整行(缩略图、标题、日期和模型),以及仅包含模型的第二行?对不起,但这不会发生。处理仅提取前端应用或报告中的相关信息。
  • 感谢肯的意见。你是说我需要运行 2 个 SQL 查询?
  • 如果为表创建别名,则可以减少必须在返回列中输入的字符

标签: mysql sql


【解决方案1】:

首先我怀疑你的表模型。如果您遇到“更新有多个模型,但不是同一个模型可以拥有多个更新”的情况,那么这是一对多的关系,您可以将 update_id 保留在模型表中。

您的问题不是很清楚和不完整。您的查询包含您未在问题中解释的列。但是,如果我以有限的详细信息正确地为您提供服务,您可以尝试以下查询。

SELECT updates.update_id,  posted,  updates.thumbnail,array_agg(first_name), array_agg(last_name), updates_models.update_id, updates_models.model_id FROM "UPDATES" updates INNER JOIN "UPDATES_MODELS" updates_models ON updates.update_id = updates_models.update_id INNER JOIN "MODELS" models ON models.model_id = updates_models.model_id group by updates.update_id, posted, updates.thumbnail, updates_models.update_id, updates_models.model_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多