Mysql 根据3个不同的列选择不同的行

Mysql 根据3个不同的列选择不同的行,mysql,sql,Mysql,Sql,我有一张这样的桌子 id userid cc cop 1 23 0.5 0.9 2 23 0.5 0.9 3 29 2.6 9.4 4 75 4.8 8.9 5 29 2.6 9.4 6 45 6.7 9.0 id

我有一张这样的桌子

    id     userid     cc    cop    
    1       23        0.5   0.9
    2       23        0.5   0.9
    3       29        2.6   9.4
    4       75        4.8   8.9
    5       29        2.6   9.4
    6       45        6.7   9.0
    id     userid     cc    cop    
    1       23        0.5   0.9
    3       29        2.6   9.4
    4       75        4.8   8.9
    6       45        6.7   9.0
SELECT MIN(id), userid, cc, cop 
FROM table 
GROUP BY userid, cc, cop;
我想要所有的角色,使cc和cop是不同的1.e的结果应该是 像这样的

    id     userid     cc    cop    
    1       23        0.5   0.9
    2       23        0.5   0.9
    3       29        2.6   9.4
    4       75        4.8   8.9
    5       29        2.6   9.4
    6       45        6.7   9.0
    id     userid     cc    cop    
    1       23        0.5   0.9
    3       29        2.6   9.4
    4       75        4.8   8.9
    6       45        6.7   9.0
SELECT MIN(id), userid, cc, cop 
FROM table 
GROUP BY userid, cc, cop;
我想要的任何行有cc,cop,userid相同,只有一个应该被选中
伪代码:从userid、cc、cop与结果不同的表中选择*

这将返回所需的结果,无论记录是如何保存在表中的

SELECT MIN(ID) ID, userid, cc, cop
FROM   tableName
GROUP  BY userid, cc, cop
其他来源


使用分组依据尝试此查询

select * from mytable group by userid , cc , cop 

也许你可以试试这样的

    id     userid     cc    cop    
    1       23        0.5   0.9
    2       23        0.5   0.9
    3       29        2.6   9.4
    4       75        4.8   8.9
    5       29        2.6   9.4
    6       45        6.7   9.0
    id     userid     cc    cop    
    1       23        0.5   0.9
    3       29        2.6   9.4
    4       75        4.8   8.9
    6       45        6.7   9.0
SELECT MIN(id), userid, cc, cop 
FROM table 
GROUP BY userid, cc, cop;

它将选择每个事件的第一个id。

您将希望使用使用GROUP BY子句的select语句

SELECT *
FROM Table
GROUP BY userid
它们显示为单独的条目,因为每行至少有一个不同的列(在本例中为id)。您可以通过使用上述语句或从SELECT语句中省略“id”列来避免这种情况,例如:

SELECT userid, cc, cop
FROM Table
如果像上面那样选择没有id列的数据,则数据将自动分组,因为将有完全重复的行


希望这有帮助。

如果
ID
是主键,并且它被依次保存在表中,那么它将返回正确的值,否则它将不会返回所需的结果(顺便说一下,不是我的否决票)。有关更多说明,请参阅此演示。我也没有投你反对票,我认为在重复的情况下,OP只需要一个ID,不管怎样,所以我相信这个答案是正确的!我只想补充一点,当在分组查询中选择未聚合的列时,mysql可以为这些列自由选择任何值,因此不能保证它总是选择第一个/最小值,即使ID是主键并按顺序保存:这在实践中是正确的,但是它没有文档记录,最好不要重复这个。谢谢你的回答,但是OP没有提到他需要MAX、MIN或RANDOM,而是一个,这满足了要求,而且人们通常将id作为主键,所以我假设同样的事情