2014-12-02 135 views
-1

我正在寻找一种方法来显示来自不同组的单行。 我的意思是,如果我有例如表所示:特定数据库搜索

id|name|groupID 
1 |....| 1 
2 |....| 1 
3 |....| 1 
4 |....| 2 
5 |....| 2 
6 |....| 3 
7 |....| 4 
8 |....| 4 
9 |....| 4 

它将从每个组ID,一个用于组ID = 1时,一个组ID = 2只显示一个行等等。 非常感谢您的帮助。

+1

使用group by by SELECT * FROM my table GROUP BY goupID' – 2014-12-02 16:41:37

回答

0

尝试这种情况:

select * 
    from tableName 
    where id in (
    select max(id) from tableName group by groupID 
) 
+0

不要这样做,不可能在同一组中有2个项目 – 2014-12-02 16:42:57

+0

他说:“我正在寻找一种方法来显示单行不同的组“ – MiiinimalLogic 2014-12-02 16:43:33

+1

他不说'我想在我的数据库中存储唯一的groupId' – 2014-12-02 16:44:07

0

Group by doc

的GROUP BY语句中结合使用与聚合函数组的结果集由一个或多个列。

SQL:

SELECT * FROM my table GROUP BY goupID 

返回应该是:

id|name|groupID 
1 |....| 1 
4 |....| 2 
6 |....| 3 
7 |....| 4 

Distinct doc

在表中,一列可能包含许多重复值;有时你只想列出不同的(不同的)值。

SQL:

SELECT DISTINCT(goupID) FROM my table 

回报率应会:

groupID 
1 
2 
3 
4 

希望能够帮助您。

+0

所有最后的ID这不会工作,因为它缺乏一个聚合函数,如上述报价中所述。你可以添加'MIN(id)',但你仍然无法使用'*'。 – 2014-12-02 16:57:22

+0

在MySQL中,查询是有效的并且它运行,但既不在GROUP BY子句中也不用于聚合函数的列的值不可预测。它也可以为'id'返回2,5,6和9。但是,请求是从每个组获取单个行,但它没有指定哪一行,因此此查询足够满足此目的。 – axiac 2014-12-02 16:59:36

+0

@RenéHoffmann这个sql工作,测试一下。 – 2014-12-02 17:00:29