【问题标题】:SQL selecting distinct values from set of values in the same tableSQL 从同一个表中的一组值中选择不同的值
【发布时间】:2020-09-30 17:41:06
【问题描述】:

我的查询结果如下表:

value1     name  
------     ------
 abc       JOHN
 def       JOHN
 mno       JOHN
 mno       JOHN
 abc       JAMES
 abc       JAMES
 def       JAMES
 mno       RICK

在上表中,JOHN 的值 mno 重复了两次,JAMES 的值abc 重复了两次。

我使用的查询在这里:

SELECT tc.value, tr.name
  FROM table1 tc, table2 tr
 WHERE tc.id = tr.roll
 ORDER BY tr.name;

我希望得到的结果是必须从每个名称中删除重复值。 结果应该是这样的:

value1   name
------  ------
 abc     JOHN
 def     JOHN
 mno     JOHN
 abc     JAMES
 def     JAMES
 mno     RICK

我只想从每个名称中删除重复值。 我怎样才能做到这一点?

【问题讨论】:

    标签: mysql sql group-by distinct


    【解决方案1】:

    您可以使用已标记的 DISTINCT 关键字:

    SELECT DISTINCT t1.value, t2.name
      FROM table1 t1
      JOIN table2 t2
        ON t1.id = t2.roll
     ORDER BY t2.name;
    

    GROUP BY t1.value, t2.name 子句,或者:

    SELECT t1.value, t2.name
      FROM table1 t1
      JOIN table2 t2
        ON t1.id = t2.roll
     GROUP BY t1.value, t2.name   
     ORDER BY t2.name; 
    

    【讨论】:

      【解决方案2】:

      尝试使用 distinct 如下所示,也请使用如图所示的标准连接。

      SELECT DISTINCT tc.value, tr.name 
      FROM table1 tc 
      INNER JOIN table2 tr 
      ON tc.id = tr.roll 
      ORDER BY tr.name;
      

      【讨论】:

        猜你喜欢
        • 2011-06-01
        • 2017-01-26
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多