【问题标题】:Get distinct rows combined from multiple fields (including a joined one)获取从多个字段组合的不同行(包括连接的行)
【发布时间】:2014-05-23 12:05:42
【问题描述】:

我有两张桌子:

产品

ID   productname    organization 
---  ------------   ------------ 
1         X            orga #1
2         X            orga #2

人工制品

ID   productID        status     revision  platform 
---  ------------   ----------   --------  --------
1         1          milestone    0.9.0      win
2         1          milestone    0.9.0      osx
3         2           release     1.0.0      win

我需要组合的是包含相同 productId、status、revision 的工件。它们唯一的区别是平台不属于结果集。

结果集应包含: artifact-id、状态、修订、产品名称和组织

谁能帮我解决这个问题?

【问题讨论】:

  • 能否请您发布CREATE TABLE 声明?
  • 您如何想象这些结果看起来如何,如果您不对其进行分组,您将无法准确返回工件 ID(您将获得一个随机的或全部的,其中如果这与根本不分组没有什么不同)。
  • @scragar 随机一个就足够了。
  • 如果您不在乎是哪一个,为什么还要从 Artifacts 获得ID?这真的没有意义。

标签: mysql group-by distinct


【解决方案1】:
SELECT a.id artifactID, status, revision, productname, organization
FROM Products p
JOIN Artifacts a ON a.productID = p.id
GROUP BY productID, status, revision

【讨论】:

  • 那行不通。我刚刚执行了它,仍然有重复的(只是不同的平台)条目。
  • 修复它以使用GROUP BY 选择您想要区分的列。
【解决方案2】:

如果您想要 productID 与 Product id 相同的所有工件,请使用 INNER JOIN

SELECT A.id,
       A.status,
       A.revision,
       P.productname,
       P.organization
FROM Artifacts A
INNER JOIN Products P ON A.productID=P.id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 2011-01-28
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多