Mysql - 获取重复结果

标签 mysql sql

我有 3 个表 UPDATES、MODELS 和 UPDATES_MODELS。

UPDATES 表具有以下列:

  • update_id,
  • 已发布
  • 缩略图

MODELS 表包含以下列:

  • 型号_id
  • 名字
  • 姓氏。

UPDATES_MODELS 是一个链接表,具有以下列:

  • update_id
  • 型号 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

最佳答案

首先我怀疑你的表模型。如果您遇到“更新有多个模型,但不同模型可以拥有多个更新”的情况,那么它是一对多关系,您可以将 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

关于Mysql - 获取重复结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41582146/

相关文章:

php - 内部加入动态表数

php - CakePHP SQL 准备语句

java - 如何使用jdbc从oracle DB获取时间戳

sql - 了解 "Not found: Dataset ### was not found in location US"错误

SQLite,根据日期进行查询

mysql - 多对多关系表命名

mysql - 对另一个查询的最高值进行排序

php - 订购具有父子关系的评论的分层查询?

mysql - 我的查询错误在哪里?

sql - 将 select 中的 db2 列名转换为 json 文件中的小写